本帖最后由 白磊 于 2013-5-14 16:33 编辑
import java.lang.reflect.*;
public class Test {
public static void main(String[] args) {
FiledTest o1=new FiledTest("hello1",100);
FiledTest o2=new FiledTest("hello2",300);
System.out.println(compare(o1,o2).name+"is bigger"); //这句报错
}
private static Object compare(FiledTest o1, FiledTest o2){
try {//以下用两种方式获取一个Field对象
//返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段(属性)。
Field field =o1.getClass().getDeclaredField("age");
field=FiledTest.class.getDeclaredField("age");
//获得两个对象的age值
int value1=(Integer) field.get(o1);
int value2=(Integer) field.get(o2);
//进行比较
if(value1>value2){
return o1;
}else
return o2;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
class FiledTest {
String name;
int age;
public FiledTest(String name,int age){
this.name=name;
this.age=age;
}
} |