15. 反射

1 反射的理解

1.1 正射

我们在编写代码时,当需要使用到某一个类的时候,必定先会去了解这是一个什么类,是用来做什么的,有怎么样的功能。之后我们才对这个类进行实例化,之后再使用这个类的实例化对象进行操作。

Person person = new Person();
person.sleep("8:00");
1.2 反射

反射则是在代码一开始编写时不知道要初始化的类是什么。因此,自然也无法使用new关键字来创建对象了。而当我们之后得到我们要初始化的类的名称及路径时,我们就可以使用JDK提供的反射API进行反射调用。

Class clazz = Class.forName("com.Person");
Method method = clazz.getMethod("sleep", String.class);
Constructor constructor = clazz.getConstructor();
Object object = constructor.newInstance();
method.invoke(object, "8:00");

以上两段代码,其结果都是一样的,但是其实现的过程却有很大的差别:
• 第一段代码在未运行前就已经确定了要运行的类(Person);
• 第二段代码则是在整个程序运行时从某些地方(例:配置文件)获取到相应的字符串值才能知道要运行的类(“com.Person”)。

2 反射常用类和常用函数<

你可能感兴趣的:(开发语言,java,入门)