java反射——Field
轉自http://www.cnblogs.com/maxblog/archive/2010/09/01/1814816.html
public class FieldTest {
private int i = 0;
private float f = 0.0f;
private boolean b = true;
private String s = "";
}
public class ReflectTest {
public static void main(String[] args) throws Exception {
// Point pt1 = new Point(3,5);
// Point pt2 = new Point(6,7);
//
// //得到一個欄位
// Field fieldY = pt1.getClass().getField("y"); //y 是變數名
// System.out.println(fieldY.get(pt1)); //這才是5
// System.out.println(fieldY.get(pt1)); //這才是5
//
// //暴力反射
// Field fieldX = pt1.getClass().getDeclaredField("x"); //這個管你公的私的,都拿來
// fieldX.setAccessible(true);//上面的程式碼已經看見錢了,開始搶了
// System.out.println(fieldX.get(pt1));
// Field[] declaredFields = pt1.getClass().getDeclaredFields();
// System.out.println(declaredFields.length);
/**
* =====================================================================
*/
FieldTest fieldTest = new FieldTest();
Field[] declaredFields = FieldTest.class.getDeclaredFields();
for(int i=0;i<declaredFields.length;i++){
Field field = declaredFields[i];
System.out.println("名稱為:"+field.getName());
Class fieldType = field.getType();
System.out.println("型別為:"+field.getType());
boolean isTurn = true;
// field.setAccessible(true);
while(isTurn)
{
try{
isTurn = false;
System.out.println("修改前的值為:"+ field.get(fieldTest));
if(fieldType.equals(int.class))
{
System.out.println("利用setInt()方法修改成員變數的值.");
field.setInt(fieldTest, 124);
}
else if(fieldType.equals(float.class))
{
System.out.println("利用setFloat()方法修改成員變數的值.");
field.setFloat(fieldTest, 9.9f);
}else if(fieldType.equals(boolean.class))
{
System.out.println("利用setBoolean()方法修改成員變數的值.");
field.setBoolean(fieldTest, false);
}
else
{
System.out.println("利用set()方法修改成員變數的值.");
field.set(fieldTest, "NWQ");
}
System.out.println("修改後的值為:"+field.get(fieldTest));
}
catch(Exception e)
{
System.out.println("在設定成員變數時發生異常,執行setAccessible()方法.");
field.setAccessible(true);
isTurn = true;
}
}
System.out.println("**************");
}
}
}
相關文章
- Java SE之反射技術[Class,Field](一)Java反射
- 【Java 反射學習】Java 反射基礎Java反射
- [Java 反射學習] Java 反射基礎Java反射
- Java 反射Java反射
- Java——反射Java反射
- Java反射Java反射
- Java反射—初探反射基礎Java反射
- Java 反射 APIJava反射API
- Java 反射原理Java反射
- Java的反射Java反射
- 20201209——java反射Java反射
- 淺析Java反射--JavaJava反射
- Java筆記-Java反射(二)Java筆記反射
- Java基礎系列—Java反射Java反射
- Java 反射基礎Java反射
- Java反射-註解Java反射
- Java學習:反射Java反射
- Java反射-屬性Java反射
- Java反射-模組Java反射
- Java 反射詳解Java反射
- 秒懂Java反射Java反射
- java反射技術Java反射
- java反射全解Java反射
- Java 反射簡介Java反射
- java反射詳解Java反射
- Java筆記-反射Java筆記反射
- 淺析JAVA反射Java反射
- Java 方法的反射Java反射
- Java反射機制Java反射
- JAVA反射舉例Java反射
- [Java基礎]反射Java反射
- Java學習_反射Java反射
- Java基礎 —— 反射Java反射
- 【Java面試指北】反射(1) 初識反射Java面試反射
- 【Java反射】Java 泛型基礎Java反射泛型
- Java反射與hook混用反射某支付的方法Java反射Hook
- java反射構建物件和方法的反射呼叫Java反射物件
- java反射學習(一)Java反射
- java利器——反射機制Java反射