Java通过反射查看类的信息示例 Java 通过反射查看类的信息是 Java 语言中的一种重要技术,通过反射机制可以查看类的信息,例如类的构造器、方法、字段、注解等。下面将详细介绍 Java 通过反射查看类的信息的相关原理与实现技巧。 一、获取 Class 对象 在 Java 中,Class 对象是反射机制的入口,通过 Class 对象可以获取类的信息。有多种方式可以获取 Class 对象,例如使用 Class.forName() 静态方法、使用某个对象的 getClass() 方法等。例如: Class<ClassTest> clazz = ClassTest.class; 二、获取构造器 通过 Class 对象可以获取类的构造器,例如使用 getDeclaredConstructors() 方法可以获取类的所有构造器,使用 getConstructors() 方法可以获取类的所有 public 构造器。例如: Constructor[] ctors = clazz.getDeclaredConstructors(); System.out.println("ClassTest 的全部构造器如下:"); for (Constructor c : ctors) { System.out.println(c); } 三、获取方法 通过 Class 对象可以获取类的方法,例如使用 getMethods() 方法可以获取类的所有 public 方法。例如: Method[] mtds = clazz.getMethods(); System.out.println("ClassTest 的全部 public 方法如下:"); for (Method md : mtds) { System.out.println(md); } 四、获取字段 通过 Class 对象可以获取类的字段,例如使用 getDeclaredFields() 方法可以获取类的所有字段,使用 getFields() 方法可以获取类的所有 public 字段。 五、获取注解 通过 Class 对象可以获取类的注解,例如使用 getAnnotations() 方法可以获取类的所有注解。 六、实战示例 下面是一个完整的示例代码,演示了如何使用反射机制获取类的信息: import java.util.*; import java.lang.reflect.*; import java.lang.annotation.*; // 定义可重复注解 @Repeatable(Annos.class) @interface Anno {} @Retention(value = RetentionPolicy.RUNTIME) @interface Annos { Anno[] value(); } // 使用 4 个注解修饰该类 @SuppressWarnings(value = "unchecked") @Deprecated // 使用重复注解修饰该类 @Anno @Annos public class ClassTest { // 为该类定义一个私有的构造器 private ClassTest() {} // 定义一个有参数的构造器 public ClassTest(String name) { System.out.println("执行有参数的构造器"); } // 定义一个无参数的 info 方法 public void info() { System.out.println("执行无参数的 info 方法"); } // 定义一个有参数的 info 方法 public void info(String str) { System.out.println("执行有参数的 info 方法" + ",其 str 参数值:" + str); } // 定义一个测试用的内部类 class Inner {} public static void main(String[] args) throws Exception { // 下面代码可以获取 ClassTest 对应的 Class Class<ClassTest> clazz = ClassTest.class; // 获取该 Class 对象所对应类的全部构造器 Constructor[] ctors = clazz.getDeclaredConstructors(); System.out.println("ClassTest 的全部构造器如下:"); for (Constructor c : ctors) { System.out.println(c); } // 获取该 Class 对象所对应类的全部 public 构造器 Constructor[] publicCtors = clazz.getConstructors(); System.out.println("ClassTest 的全部 public 构造器如下:"); for (Constructor c : publicCtors) { System.out.println(c); } // 获取该 Class 对象所对应类的全部 public 方法 Method[] mtds = clazz.getMethods(); System.out.println("ClassTest 的全部 public 方法如下:"); for (Method md : mtds) { System.out.println(md); } } } 通过上面的示例代码,可以看到如何使用反射机制获取类的信息,包括构造器、方法、字段、注解等。
- 粉丝: 6
- 资源: 919
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助