2019-03-23——Java反射 Class

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>的对象(可能是添加到制定了泛型的集合里面)。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容