跟王老师学反射:使用反射生成并操作对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟王老师学反射:使用反射生成并操作对象相关的知识,希望对你有一定的参考价值。

跟王老师学反射(五):使用反射生成对象

主讲教师:王少华   QQ群号:483773664

学习内容

使用反射生成对象



模板类

技术分享

技术分享

一、创建对象

(一)、非反射方法

技术分享

(二)、反射方式

通过构造方法生成对象,有二种方式,一种通过无参的构造方法,一种是通过有参的构造方法。

1、无参构造方法

1.1 如果无参数的构造方法是public

技术分享

也可以使用Class对象的newInstance()方法来创建该Class对象对应类的实例

技术分享

1.2 如果无参构造方法是私有化的

技术分享

结论

如果无参构造访问,是私有化的,一定要使用构造方法来构造对象,而不能使用使用Class对象的newInstance()方法来创建该Class对象对应类的实例。因为Class对象的newInstance()方法,本质上还是使用Construct类中的public无参构造方法.

2 使用有参数构造方法来创建对象

先使用Class对象获取指定的Constructor对象,再调用Constructor对象的newInstance()方法来创建该Class对象的对应的实例。通过这种方式可以选择使用某个类的指定构造器来创建实例。

利用指定构造器来创建Java对象需要以下三个步骤

  1. 获取该类的Class对象

  2. 利用Class对象的getConstructor()方法来猎取指定的构造器

  3. 调用Constructor的nesInstance()方法来创建Java对象

技术分享

二、练习

(一)需求

编写一方法,根据传入的全限类名,生成该类对应的实例

(二)参考代码:

1
2
3
4
public T createObject(String className) throws Exception{
        Class<T> tClass = (Class<T>) Class.forName(className);
        return tClass.newInstance();
    }
1
2
3
4
5
public static void test3() throws Exception{
        ObjectFactory<Person> objectFactory = new ObjectFactory<>();
        Person person = objectFactory.createObject("chapter09_05.Person");
        System.out.println(person);
    }






以上是关于跟王老师学反射:使用反射生成并操作对象的主要内容,如果未能解决你的问题,请参考以下文章

跟王老师学反射:Class类:获得Class对象

跟王老师学反射:使用反射调用方法

跟王老师学反射使用反射调用属性

跟王老师学反射:反射应用小案例--进行对象拷贝

跟王老师学反射:动态代理

跟王老师学反射:反射概述