Java从入门到精通 - 反射Field
2010-09-01 13:22
344 查看
import java.lang.reflect.Field;
public class FieldTest {
int i;
public float f;
protected boolean b;
private String s;
public FieldTest()
{
i=0;
f=0.0f;
b = true;
s = "";
}
public static void main(String[] args) {
//进行类实例化:
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;
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("**************");
}
}
}
public class FieldTest {
int i;
public float f;
protected boolean b;
private String s;
public FieldTest()
{
i=0;
f=0.0f;
b = true;
s = "";
}
public static void main(String[] args) {
//进行类实例化:
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;
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反射field和method的顺序问题
- 关于Java反射机制中的Field简单尝试与示例以及说明
- Java_反射_Class类(Method,Field,Constructor)
- JAVA反射系列之Field,java.lang.reflect.Field使用获取方法。
- java反射getDeclaredField和getField的区别
- java反射之Field 获取对象属性及设置属性值
- java.lang.NoSuchFieldException--java反射异常
- Java反射之Field用法
- java反射--Field
- JAVA反射系列之Field
- JAVA反射系列之Field,java.lang.reflect.Field使用获取方法。
- java 反射 Field
- java反射之-Field
- Java反射之Field用法
- JAVA反射系列之Field,java.lang.reflect.Field使用获取方法
- Java反射06 : 成员变量Field学习示例
- Java_反射_Class类(Method,Field,Constructor)
- Java进阶(极客)——反射机制(二)Field 对象的机制与实现
- 【java】之Method和Field反射获取和设置属性值
- Java反射系列之Field