反射相关类Class接口列表分析

        Class类提供了一组接口,来获取它的实例所表示的类型的信息。这里就对这一组接口根据信息类型层次进行整理,写在下面。

        第一类,类层次接口

        1. static Class<?> forName(String className):静态方法,用于创建Class类型实例,这里的创建实际上是到JVM中去查找引用,所有的Class对象都是通过类加载器加载到JVM中的。参数字符串是类的完全限定名称,例如String的完全限定名称为java.lang.String,这里使用完全限定名称的原因是,类在JVM中对应的Class对象是用类签名实现的,类签名的构成是:L + "完全限定名称" + ";" ,参考文章 

反射相关类Class说明

 ,这个方法不适用于基本数据类型。类是在第一次使用时被类加载器动态加载到JVM中的,如果在调用forName之前并没有使用到className指定的类,这个方法就会启动加载过程,并且初始化类,前提要求是类必须有无参数构造方法,否则就会抛出ClassNotFoundException。

        2.String getName() : 获取类的完全限定名称;

        3.String getSimpleName() : 获取类名,不带包名;

        4.String getCanonicalName() : 获取类的完全限定名称;

        5.Class[] getClasses() : 类内部定义的或者基类内部定义的具有public访问权限的内部类列表;

        6.Class[] getDeclaredClasses() : 获取类内声明的内部类,不一定是public,不包括基类内部类;

        7.Class getDeclaringClass() : 如果当前类为内部类,获取声明内部类的外部类,如果当前类不是内部类,或者当前类是一个数组类或者基本数据类型,返回null;

        8.Class getEnclosingClass() : 如果当前类为内部类,获取声明内部类的外部类,如果当前类不是内部类,返回null

        9.Class[] getInterfaces() : 获取类实现的接口列表;

        10.Type[] getGenericInterfaces() : 获取当前类直接实现的接口列表,不包括基类实现的接口,也不包括当前类实现接口的上层接口,如果当前类为基本数据类型,或者void类型,返回空列表;

        11.Type getGenericSuperClass() : 获取类继承的基类;

        12.Class getSuperClass() : 获取类继承的基类;

        13.ClassLoader getClassLoader() : 获取类对应的类加载器;

        第二类,类型转换的接口

        1.<U> Class<? extends U> asSubClass(Class<U> clazz) :  Class对象类型转换,把当前Class对象转换为参数Class对象所表示类型的某个子类型Class对象,如果转换失败,抛出ClassCastException。

        2.T cast(Object obj) : 普通对象类型转换,把参数对象转换成当前类对象所表示的类型的对象;

        第三类,构造方法相关接口,Constructor是一个重要的泛型类,后面会单独讲。

        1.Constructor<T> getConstructor(Class<?>... parameterTypes) : 获取带有给定参数类型列表的构造函数,如果没有,抛出NoSuchMethodException;

        2.Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) :

        3.Constructor[] getConstructors() : 

        4.Constructor[] getDeclaredConstructors() : 

        5.Constructor<?> getEnclosingConstructor()

        第四类,方法相关的接口,Method是一个重要的反射类,后面会单独分析。

        1.Method getMethod(String name, Class<?>... parameterTypes) : 从当前类所在的继承结构中查找方法;

        2.Method getDeclaredMethod(String name, Class<?>... parameterTypes) :从当前类的定义中查找方法,不包括基类中定义的方法;

        3.Method[] getMethods() : 从当前类所在的继承结构中获取所有方法列表;

        4.Method[] getDeclaredMethods() : 从当前类的定义中获取方法列表,不包括基类中定义的方法;

        5.Method getEnclosingMethod() 

        第五类,成员相关的接口,Field是一个重要的反射类,后面会单独分析。

        1.Field getField(String name)

        2.Field getDeclaredField(String name) : 这里Declared的意思,已经明了了吧。

        3.Field[] getFields()

        4.Field[] getDeclaredField()

        第六类,注释相关的接口

        1. <A extends Annotation> getAnnotation(Class<A> annotationClass)

        2. Annotation[] getAnnotations()

        3. Annotation[] getDeclaredAnnotations()

        其他接口

        1.T[] getEnumConstants()

        2.Package getPackage()

        3.TypeVariable<Class<T>> getTypeParameters()

        4.boolean isAnonymousClass() : 是否为匿名类;

        5.boolean isAnnotation() : 是否为注释类;

        6.boolean isAnnotationPresent(Class<? extends Annotation> clazz) : 是否有某类注释;

        7.boolean isInstance(Object obj) : 判断某对象是否为当前类型

        8.boolean isEnum()

        9.boolean isArray()

        10. boolean isInterface() 

        11. boolean isLocalClass()

        12. boolean isPrimitive() : 是否为基本数据类型

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值