欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java反射机制(初步认识)

程序员文章站 2022-07-03 10:09:46
反射的实质:就是在得到Class对象之后,反向获取Class对象的对象。解读:Class的对象好比一个类,反向获取Class对象(也就是类)的对象。不清楚Class类的可以点击查看本人另一篇博文:Class与class的区别对Class类解读:我们通常认为类是对象的抽象和集合,Class就相当于是对类的抽象和集合。也可以认为对象是类的实例,类是Class的实例。运用反射机制:在获得Class对象后我们可以调用:Class对象.getDeclaredConstructor().newInst...

反射的实质:

就是在得到Class对象之后,反向获取Class对象的对象。
解读:Class的对象好比一个类,反向获取Class对象(也就是类)的对象。
不清楚Class类的可以点击查看本人另一篇博文:Class与class的区别

对Class类解读:

我们通常认为类是对象的抽象和集合,Class就相当于是对类的抽象和集合。
也可以认为对象是类的实例,类是Class的实例。

运用反射机制:

在获得Class对象后我们可以调用:
Class对象.getDeclaredConstructor().newInstance()
方法去获取Class对象的对象
例子:

package Task;
import org.junit.Test;

public class Try0 {
    @Test
    public void toTry() throws Exception {
        //forName方法:参数为其类的路径
        Class a = Class.forName("Task.Try1");
        System.out.println(a);

        //通过对象得到类
        Try1 try1 = new Try1();
        Class b = try1.getClass();
        System.out.println(b);

        //类字面常量
        Class c = Try1.class;
        System.out.println(c);

        //JAVA9之后废弃newInstance()方法
        //反射机制,用Class的对象a(Try1类型) 生成了Try1的对象try2,并且调用了try2的toPrint方法。 
        Try1 try2 = (Try1) a.getDeclaredConstructor().newInstance();
        System.out.println(try2+try2.toPrint());
        
        //反射机制,用Class的对象b(Try1类型) 生成了Try1的对象try3,并且调用了try3的toPrint方法。
        Try1 try3 = (Try1) b.getDeclaredConstructor().newInstance();
        System.out.println(try3+try3.toPrint());
        
        //反射机制,用Class的对象c(Try1类型) 生成了Try1的对象try4,并且调用了try4的toPrint方法。
        Try1 try4 = (Try1) c.getDeclaredConstructor().newInstance();
        System.out.println(try4+try4.toPrint());
    }
}

class Try1 {
    public String toPrint(){
        return "调用了toPrint";
    }
}

输出结果:
Java反射机制(初步认识)
可以看到生成了不同的Try1对象,和new出来的对象一样,可以使用对象的方法等等。

本文地址:https://blog.csdn.net/MrYushiwen/article/details/107380536

相关标签: Java java