Java Class类

Java Class类教程

Class 是一个类,它的构造方法是私有的,它由类加载器创建 Class 对象,我们可以通过 对象的 getClass() 方法获取到 Class 对象。

Class 表示类一个类的本身,它可以得到一个类里面的完整结构,包括类里面的属性,方法定义等等。

Java Class类常用方法

方法名称 描述
public static Class<?> forName(String className) throws ClassNotFoundException 传入一个完整的报名加类名来实例化 Class 对象
public Constructor<?>[] getConstructors() throws SecurityException 获取一个类里面的所有的构造函数
public Field[] getDeclaredFields() throws SecurityException 获取本类里面所有单独定义的属性
public Field[] getFields() throws SecurityException 获取该类里面的权限是 public 类型的属性
public Method[] getMethods() throws SecurityException 获取一个类里面的全部方法
public Class<?>[] getInterfaces() 获取所有被这个类实现的接口
public String getName() 得到当前类对象完整的包+类名称
public T newInstance() throws InstantiationException,IllegalAccessException 根据 Class 定义的类实例化对象

案例

因为 Class 没有任何构造方法,如果想使用 Class 对象就需要通过 forName 方法来实例化对象。除了这个方法,我们也可以通过 类.class 或者 对象.getClass() 方法实例化。

我们先定义一个供我们访问的测试类 PersonForClass.java

package com.haicoder.net.cls; public class PersonForClass { private Integer age; private String name; public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public PersonForClass() { } public PersonForClass(Integer age, String name) { this.age = age; this.name = name; } }

定义一个测试类

package com.haicoder.net.cls; public class ClassTest { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)"); Class<?> class1 = null; Class<?> class2 = null; Class<?> class3 = null; try { class1 = Class.forName("com.haicoder.net.cls.PersonForClass"); } catch (ClassNotFoundException e) { e.printStackTrace(); } class2 = new PersonForClass().getClass(); class3 = PersonForClass.class; System.out.println(" Class.forName() 得到的类名称:" + class1.getName()); System.out.println(" 对象.getClass 得到的类名称:" + class2.getName()); System.out.println(" 类.class 得到的类名称:" + class3.getName()); } }

运行结果如下:

01 java class 类.png

通过运行结果我们看到三种方式得到的结果是一样的,但是通过 forName 这种方式来获取是比较通用的。 类.class 或者 对象.getClass() 都需要知道具体的实现类,如果不知道实现类在使用的时候会有一些限制,但是 forName 里面传递的是一个字符串,类的路径。它让程序具备了更大的灵活性。

Java Class类总结

Class 类表示的是一个类的本身,通过它的对象,你可以获取到类里面的相关信息,比如属性的信息,方法的信息等等。