Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。
Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。
以下示例使用 Class 对象来显示对象的类名:
void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
}
···
package core.java.lang;
import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
- @author DGW
- @date 2017 2017年4月13日 下午5:35:17
- @filename SubsetClass.java
*/
public class ClassdemoClass {
public static void main(String[] args) throws Exception {
//通过这个办法可以获得一个关于类的任何信息,方法,字段
ClassdemoClass s=new ClassdemoClass();
Class<ClassdemoClass> class1 = (Class<ClassdemoClass>) s.getClass();
System.out.println(class1.getName());
System.out.println(class1.getSimpleName());
System.out.println(class1.getSuperclass());
Field[] fields = class1.getFields();
Method[] methods = class1.getMethods();
for (Method method : methods) {
System.out.println(method);
}
ClassdemoClass[] enumConstants = class1.getEnumConstants();
System.out.println(enumConstants);
}
private static void m1() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
/**
* 获取类对象的三种办法
*/
// 1
Class obj = Class.forName("ClassdemoClass");
// 2
ClassdemoClass demo = new ClassdemoClass();
Class<? extends ClassdemoClass> class1 = demo.getClass();
// 展示相关方法
System.out.println(class1.getName());
System.out.println(class1.getSuperclass());
// 3
Object obj2 = ClassdemoClass.class;
// _________________________________________________
Object object = obj.newInstance();
System.out.println(object.getClass());
}
}
···