【Java-15】反射知识总结
反射是Java的一个强大功能,它允许程序在运行时检查类、接口、字段和方法,并能操作它们。以下是使用Java反射的一些常见方法和示例代码。
- 获取Class对象
Class<?> clazz = Class.forName("java.lang.String");
- 创建实例
Class<?> clazz = Class.forName("java.lang.String");
Constructor<?> constructor = clazz.getConstructor();
String str = (String) constructor.newInstance();
- 获取字段
Class<?> clazz = Class.forName("java.lang.String");
Field field = clazz.getDeclaredField("value");
field.setAccessible(true); // 使私有字段可访问
- 调用方法
Class<?> clazz = Class.forName("java.lang.String");
Method method = clazz.getDeclaredMethod("charAt", int.class);
method.setAccessible(true); // 使私有方法可访问
String str = (String) method.invoke("Hello", 1);
- 获取接口
Class<?> clazz = Class.forName("java.lang.String");
Class<?>[] interfaces = clazz.getInterfaces();
- 获取父类
Class<?> clazz = Class.forName("java.lang.String");
Class<?> superclass = clazz.getSuperclass();
- 检查类型
Class<?> clazz = Class.forName("java.lang.String");
boolean isInterface = clazz.isInterface();
boolean isArray = clazz.isArray();
- 获取注解
Class<?> clazz = Class.forName("java.lang.String");
Annotation[] annotations = clazz.getAnnotations();
以上代码片段展示了如何使用Java反射API进行基本操作。在实际应用中,应该处理异常和确保安全的反射使用,以避免潜在的安全问题和破坏设计的封装性。
评论已关闭