美文网首页Java开发那些事
JAVA基础篇-Class反射机制类的用途

JAVA基础篇-Class反射机制类的用途

作者: 艺术类架构师 | 来源:发表于2019-06-12 11:26 被阅读205次

JAVA利用反射机制并实例化一个类的几种方法。

第一种:Class.forName("类的路径名").newInstance();

Class.forName("类的全路径").newInstance()

原理就是反射机制,通过名字找到类的映射Class,然后Class中提供了一个通过调用类的init()构造方法进行初始化类。如果类找不到会抛出ClassNotFoundException异常。

第二种:Object.class.newInstance();

第二种方式其实也是通过对象本身提供了一个可以理解为对象快照的副本,这个跟JVM类加载机制的原理有关。

第三种:Object.getClass().newInstance();

第三种方式是通过对象本身在自己的超类Object对象中提供了一个获取Class对象的方法.

共同点:这三种方法都是JAVA反射机制的实现,都需要得到Class对象,然后通过它去new出一个实例出来。需要注意的是当执行对象的实例方法时:如果该对象没有提供可访问到的构造方法,则会抛出实例化异常InstantiationException。

Class的特性:Class其实就是JAVA类编译之后产生的字节码文件,它提供了私有的构造函数,这个Class里面仅仅只有一个带有传递ClassLoader参数的构造函数,外部无法构造出Class的实例,它是由JVM(JAVA虚拟机)来创建的下面截图所述。

用途:

通过Class可以获取反射加载过来的对象的属性,超类,所在类路径,类加载器等方法。


可参考Class类里的实例化方法。

总结

同一个对象的不同实例对应的是同一个Class类。

抽象类,接口,数组,没有无参构造函数的对象都不能通过Class.newInstance()进行实例化。

private 修饰的构造函数是可以实例化的,因为有下面的操作。

java.security.AccessController.doPrivileged(

new java.security.PrivilegedAction() {

public Voidrun() {

c.setAccessible(true);

return null;

            }

});

相关文章

  • JAVA基础篇-Class反射机制类的用途

    JAVA利用反射机制并实例化一个类的几种方法。 第一种:Class.forName("类的路径名").newIns...

  • Class类与反射

    Java的Class类是java反射机制的基础,通过Class类我们可以获得关于一个类的相关信息,下面我们来了解一...

  • [JAVA学习笔记] 反射机制

    [JAVA学习笔记] 反射机制 Java的反射通过Class类和java.lang.reflect类库实现。通过它...

  • Java基础之反射

    Java-Reflect Class类的使用 方法的反射 成员变量的反射 构造函数的反射 Java类加载机制 一、...

  • java反射机制与类加载机制

    java反射机制与类加载机制 Class (Java SE 9 & JDK 9 ) - https://docs....

  • java反射机制

    java反射机制是为了动态获取类的结构,动态地调用对象的方法 java反射机制 获取类Class对象 A.clas...

  • Java高级-反射

    15.1.Java反射机制概述 15.2.理解Class类并获取Class实例(重点) 用反射实现类的实例化,调用...

  • Java学习day-23:反射机制

    一、反射机制_Class对象获取: 1.反射机制: 反射机制是java的动态性之一;一个类被加载后,JVM 会创建...

  • java反射机制

    java的反射机制 1 JAVA的反射机制是什么?反射机制能做什么?反射机制的优点与缺点2 认识 Class...

  • JVM的反射实现

    java的反射机制 java的反射机制是在运行状态中,对于任意一个类(Class)都能知道他的属性(Field)和...

网友评论

    本文标题:JAVA基础篇-Class反射机制类的用途

    本文链接:https://www.haomeiwen.com/subject/jjlkfctx.html