美文网首页技术栈
2019-03-23——Java反射 Class

2019-03-23——Java反射 Class

作者: 烟雨乱平生 | 来源:发表于2019-03-23 20:43 被阅读0次

    class类常用的方法说明

    方法 说明
    asSubclass(Class<U> clazz) 此方法用于转换此Class对象以表示由指定的类对象表示的类的子类。它始终返回对此类对象的引用,asSubclass用于窄化未知的Class类型的范围
    cast(Object obj) 此方法用于将对象强制转换为此Class对象表示的类或接口
    desiredAssertionStatus() 所需的指定类断言状态。很少有程序员需要此方法;它是为 jre自身提供的
    forName(String className) 返回与给定字符串(含包名)名称的类或接口相关联的类对象,静态方法
    forName(String name, boolean initialize,ClassLoader loader) 使用给定的类加载器返回与给定字符串名称的类或接口相关联的类对象。如果参数loader为空,则通过引导类加载器加载该类。只有当initialize参数为true并且尚未被初始化时,该类才被初始化。
    getAnnotatedInterfaces() 返回注释的AnnotatedType
    getAnnotatedSuperclass() 返回父类的注解的AnnotatedType
    getCanonicalName() 返回 Java Language Specification 中所定义的底层类的规范化名称。
    getClasses() 返回类定义的公共的内部类,以及从父类、父接口那里继承来的内部类,即得到该类及其父类所有的public的内部类
    getClassLoader() 返回该类的类加载器。
    getComponentType() native方法,返回表示数组组件类型的 Class。如果此类表示数组类,返回表示此类组件类型的 Class。否则返回null。
    getConstructor(Class<?>... parameterTypes) 返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法。
    getConstructors() 返回一个包含某些 Constructor 对象的数组,这些对象反映此 Class 对象所表示的类的所有公共构造方法。
    getDeclaredClasses() 返回类定义的公共的内部类,不包括继承的。即得到该类所有的内部类,除去父类的。
    getDeclaredConstructor(Class<?>... parameterTypes) 根据指定参数类型顺序返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法。可获取非公共构造方法。
    getDeclaredConstructors() 返回 Constructor 对象的一个数组,这些对象反映此 Class 对象表示的类声明的所有构造方法。不仅是公共的。
    getDeclaredField(String name) 返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。
    getDeclaredFields() 返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。
    getDeclaredMethod(String name, Class<?>... parameterTypes) 返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。
    getDeclaredMethods() 返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
    getDeclaringClass() 如果此 Class 对象所表示的类或接口是另一个类的成员,则返回的 Class 对象表示该对象的声明类。即返回所在类的class对象,对成员class对象有效,即返回本类的申明处。一个类可能是在另一个类内部定义的.
    getEnclosingClass() 返回底层类的立即封闭类。即定义此类的外部类.
    getEnclosingConstructor() 如果该 Class 对象表示构造方法中的一个本地或匿名类,则返回 Constructor 对象,它表示底层类的立即封闭构造方法。
    getEnclosingMethod() 如果此 Class 对象表示某一方法中的一个本地或匿名类,则返回 Method 对象,它表示底层类的立即封闭方法。
    getEnumConstants() 如果此 Class 对象不表示枚举类型,则返回枚举类的元素或 null。
    getField(String name) 返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。
    getFields() 返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。
    getGenericInterfaces() 返回表示某些接口的 Type,这些接口由此对象所表示的类或接口直接实现。
    getGenericSuperclass() 返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type。
    getInterfaces() 确定此对象所表示的类或接口实现的接口。
    getMethod(String name, Class<?>... parameterTypes) 返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。
    getMethods() 返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法。
    getModifiers() native方法,返回此类或接口以整数编码的 Java 语言修饰符。
    getName() 以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
    getPackage() 获取此类的包。
    getProtectionDomain() 返回这个类的ProtectionDomain
    getResource(String name) 查找带有给定名称的资源。
    getResourceAsStream(String name) 查找具有给定名称的资源。
    getSigners() 获取此类的标记。
    getSimpleName() 返回源代码中给出的底层类的简称。
    getSuperclass() 返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class。
    getTypeName() 返回该类型的名称
    isAnnotation() 如果此 Class 对象表示一个注释类型则返回 true。
    isAnonymousClass() 当且仅当底层类是匿名类时返回 true。
    isArray() 判定此 Class 对象是否表示一个数组类。
    isAssignableFrom(Class<?> cls) 判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。
    isEnum() 当且仅当该类声明为源代码中的枚举时返回 true。
    isInstance(Object obj) 判定指定的 Object 是否与此 Class 所表示的对象赋值兼容。
    isInterface() 判定指定的 Class 对象是否表示一个接口类型。
    isLocalClass() 当且仅当底层类是局部类,则返回true。
    isMemberClass() 当且仅当底层类是成员类时返回 true。
    isPrimitive() 判定指定的 Class 对象是否表示一个基本类型。
    isSynthetic() 如果此类是复合类,则返回 true,否则 false。有匿名类部类的类可以称作为复合类。
    newInstance() 调用默认构造方法创建此 Class 对象所表示的类的一个新实例。
    toGenericString() 返回该对象的描述,包含标识符等。

    getEnclosingClass方法和getDeclaringClass方法的区别在于内部匿名类,getEnclosingClass对内部匿名类也有效.

    asSubclass的用法

    其作用是将一个Class对象转换成为指定了泛型的Class对象,经常用于你不知道Class对象是什么类型的时候,例如Class.forName(str)他只能返回一个Class<?>,这时你需要将其转换为一个Class<? extends XXX>的对象(可能是添加到制定了泛型的集合里面)。


    相关文章

      网友评论

        本文标题:2019-03-23——Java反射 Class

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