A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 白磊 中级黑马   /  2013-5-14 16:12  /  899 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 白磊 于 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;
        }
}

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

2 个回复

倒序浏览
private static Object compare(FiledTest o1, FiledTest o2) ,改为:
private static FiledTest compare(FiledTest o1, FiledTest o2)
就可以了
回复 使用道具 举报
ZhaoYuBetter 发表于 2013-5-14 16:27
private static Object compare(FiledTest o1, FiledTest o2) ,改为:
private static FiledTest compare ...

同意,同意
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马