1、需要特别注意的是,手动编写的每个class类,无论创建多少个实例对象,在JVM中都只有一个Class对象,即在内存中每个类有且只有一个相对应的Class对象 。
2、Java中每个类都有一个Class对象,当编译一个新创建的类就会产生一个对应Class对象并且这个Class对象会被保存在同名.class文件里(编译后的字节码文件保存的就是Class对象)
3、 Class类只存私有构造函数,因此对应Class对象只能有JVM创建和加载
获取运行时类的完整结构 可以获取:包、修饰符、类型名、父类(包括泛型父类)、父接口(包括泛型父接口)、成员(属性、构造器、方法)、注解(类上的、方法上的、属性上的)。 相关 API
//1.实现的全部接口 public Class<?>[] getInterfaces() //确定此对象所表示的类或接口实现的接口。 //2.所继承的父类 public Class<? Super T> getSuperclass() //返回表示此 Class 所表示的实体(类、接口、基本类型)的父类的 Class。 //3.全部的构造器 public Constructor<T>[] getConstructors() //返回此 Class 对象所表示的类的所有 public 构造方法。 public Constructor<T>[] getDeclaredConstructors() //返回此 Class 对象表示的类声明的所有构造方法。 //Constructor 类中: //取得修饰符: public int getModifiers(); //取得方法名称: public String getName(); //取得参数的类型: public Class<?>[] getParameterTypes(); //4.全部的方法 public Method[] getDeclaredMethods() //返回此 Class 对象所表示的类或接口的全部方法 public Method[] getMethods() //返回此 Class 对象所表示的类或接口的 public 的方法 //Method 类中: public Class<?> getReturnType() //取得全部的返回值 public Class<?>[] getParameterTypes() //取得全部的参数 public int getModifiers() //取得修饰符 public Class<?>[] getExceptionTypes() //取得异常信息 //5.全部的 Field public Field[] getFields() //返回此 Class 对象所表示的类或接口的 public 的 Field。 public Field[] getDeclaredFields() //返回此 Class 对象所表示的类或接口的全部 Field。 //Field 方法中: public int getModifiers() //以整数形式返回此 Field 的修饰符 public Class<?> getType() //得到 Field 的属性类型 public String getName() //返回 Field 的名称 //6. Annotation 相关 get Annotation(Class<T> annotationClass) getDeclaredAnnotations() //7.泛型相关 //获取父类泛型类型: Type getGenericSuperclass() //泛型类型:ParameterizedType //获取实际的泛型类型参数数组: getActualTypeArguments() //8.类所在的包 Package getPackage()
//1.实现的全部接口 public Class<?>[] getInterfaces() //确定此对象所表示的类或接口实现的接口。 //2.所继承的父类 public Class<? Super T> getSuperclass() //返回表示此 Class 所表示的实体(类、接口、基本类型)的父类的 Class。 标签:对象,接口,public,Field,父类,Class From: https://www.cnblogs.com/callbin/p/17956042