JAVA反射(一):获取Class对象
来源:互联网 发布:电信内蒙古大数据 编辑:程序博客网 时间:2024/05/20 10:14
1. 获取父类
这是最简单也是最容易理解的方法——getSuperclass(),唯一需要说明的是,返回的一定是类,不是接口。
2. 获取内部类
获取内部类有两种,分别为class.getClasses()与class.getDeclaredClasses(),但它们两个差别极大,见下表:
需要补充的还有:
1. 内部类既可以是静态内部类,也可以是实例内部类;
2. 如果要获取所有的内部类,不包含继承的内部类时,请使用getDeclaredClasses方法;
3. 如果要获取所有的公开类,不包含protected、private、friendly,请使用getClasses方法;
4. 内部类可以是class、interface、enum(不要问为什么没有Annotation);
5. 都无法获取匿名类;
3. 通过内部类获取包装类
这是获取内部类的逆方法,通过内部类来获取包装类(外部类),方法为class.getDeclaringClass(),需要指出的是,由于在接口中也可以声明内部类,所以返回的也有可能是接口。
4. 匿名类的包装类
通过实例对象可以获取到匿名类所在的包装类(外部类),方法很形象getEnclosingClass(),示例如下:
public class ReflectClassTest { public static void main(String[] args) { Thread th = new Thread() { }; Class<?> clazz = th.getClass().getEnclosingClass(); // 结果为ReflectClassTest System.out.println(clazz); }}
无论匿名类在方法内部还是属性声明中,getEnclosingClass()都可以准确地找到包装类。
5. 其他
请注意运行时赋值与声明类之间的区别。
5. 参考文档
[1] Retrieving Class Objects
阅读全文
0 0
- Java反射(一) : 获取Class对象
- Java反射基础(一)--Class对象获取
- JAVA反射(一):获取Class对象
- java反射之获取Class对象
- java反射之获取Class对象
- java反射之获取Class对象
- Java反射——获取Class对象
- Java反射(一)Class类对象
- java 反射机制 之 Class.forName() 获取class的对象
- JAVA反射(一)获取Class对象的三种方式及其区别
- JAVA反射(一):获取Class对象的三种方式及其区别
- JAVA反射(一)获取Class对象的三种方式及其区别
- java 反射(一) 获取Class对象的三种方式
- 四种获取Class对象的方法 Java反射机制
- java反射之——获取Class对象的方法
- java 反射之获取class对象的三种方式
- Java反射获取Class文件对象3种方法
- java反射1—获取class文件对象
- Ubuntu 16.04 + caffe + cuda Installation Mannual
- 吴恩达深度学习1-4课后作业1 Building your Deep Neural Network: Step by Step
- bootstrap table 数据行合并
- 高并发Oracle数据库系统的架构与设计.pdf 免费下载
- tensorboard使用问题
- JAVA反射(一):获取Class对象
- c/c++ json对象操作
- 【BZOJ1096】仓库建设
- npm --save-dev --save 的区别
- 套接字编程2 ------ 多路复用select示例
- 爬虫之xpath语法
- 深度挖掘 ORACLE RAC 数据库架构分析与实战攻略.pdf 免费下载
- java.lang.NoSuchMethodError: org.springframework.beans.factory.annotation.InjectionMetadata.<init>(L
- Async/await