黑马程序员技术交流社区

标题: object对象转换为实际类型 [打印本页]

作者: yin1031468524    时间: 2013-6-1 18:58
标题: object对象转换为实际类型
本帖最后由 yin1031468524 于 2013-6-4 17:54 编辑

有一个公用的方法public void buildObject(Object obj),接收参数是一个Object对象。其他类会调用此方法,比如客户类new了一个Person并set了一系列属性值,调用buildObject方法后传入person。
这时候buildObject接收过来,但是并不知道对方传入的是何种对象,请问在这样的情况下,有什么办法能够将object对象转换为它本身的类型,并get到属性值
作者: Super_Class    时间: 2013-6-1 19:15
进行健壮性判断
作者: a464538715    时间: 2013-6-3 00:57
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);
        }
       
}
作者: a464538715    时间: 2013-6-3 00:57
直接把代码COPY进去就懂了 给分吧
作者: 王林涛    时间: 2013-6-3 03:19
当然用多态啊,你想要接受一个Object类型的参数,要用向上转型
Object o = new Person(); //Person为子类型Object为父类型,多态中的转型,先上转型
作者: a464538715    时间: 2013-6-3 12:35
日      我回答的对不对啊
作者: a464538715    时间: 2013-6-3 12:35
日      我回答的对不对啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2