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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yin1031468524 中级黑马   /  2013-6-1 18:58  /  1686 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yin1031468524 于 2013-6-4 17:54 编辑

有一个公用的方法public void buildObject(Object obj),接收参数是一个Object对象。其他类会调用此方法,比如客户类new了一个Person并set了一系列属性值,调用buildObject方法后传入person。
这时候buildObject接收过来,但是并不知道对方传入的是何种对象,请问在这样的情况下,有什么办法能够将object对象转换为它本身的类型,并get到属性值

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

6 个回复

倒序浏览
进行健壮性判断
回复 使用道具 举报
public class Test1 {
        void buidObject(Object object) throws Exception {
                // 获取对象名
                System.out.println(object.getClass().getName());
                // 获取对象的方法名
                Method[] methods = object.getClass().getMethods();
                // 遍历
                for(Method method : methods) {
                        System.out.println(method.getName());
                }
                // 使用下面的方法调用person对象的方法
                // object.getClass().getMethod(name, parameterTypes);
                /*
                 *  例如:
                 *          System.out.println(object.getClass().getMethod("getName", null).invoke(object, null) + "......");
                 */
        }
       
        public static void main(String[] args) throws Exception {
                Person person = new Person();
                person.setName("mother fuck");
                new Test1().buidObject(person);
        }
       
}
回复 使用道具 举报
直接把代码COPY进去就懂了 给分吧
回复 使用道具 举报
当然用多态啊,你想要接受一个Object类型的参数,要用向上转型
Object o = new Person(); //Person为子类型Object为父类型,多态中的转型,先上转型
回复 使用道具 举报
日      我回答的对不对啊
回复 使用道具 举报
日      我回答的对不对啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马