java体现反射的简单示例
2024-01-08 00:46:05
java体现反射的简单示例
下面这个示例展示了反射的多个特点,包括动态获取类信息、动态创建对象、动态调用方法和访问字段等。请注意,为了简化示例,省略了异常处理和其他细节。
1.定义一个 Dog 类:
class Dog {
private String name;
public Dog() {}
public Dog(String name) {
this.name = name;
}
public void doSomething() {
System.out.println(name + ": 2024旺旺旺...");
}
public String toString() {
return "你好!我是" + name;
}
}
2.反射调用示例代码:
public class ReflectExample {
public static void main(String[] args) throws Exception {
// 获取类的信息
Class<?> clazz = Dog.class;
String className = clazz.getSimpleName();
int modifiers = clazz.getModifiers();
Package pkg = clazz.getPackage();
System.out.println("Class Name: " + className); // 类名
System.out.println("Modifiers: " + Modifier.toString(modifiers)); // 类修饰符
System.out.println("Package: " + pkg.getName()); // 包名
// 通过无参构造创建对象实例
Object instance = clazz.newInstance();
// 获取构造函数并创建对象
Constructor<?> constructor = clazz.getConstructor(String.class);
instance = constructor.newInstance("旺财");
// 获取和调用方法
Method method = clazz.getMethod("doSomething");
method.invoke(instance);
// 获取和设置字段的值
Field field = clazz.getDeclaredField("name");
field.setAccessible(true);
Object value = field.get(instance);
System.out.println("Field Value: " + value); // Field Value: 旺财
field.set(instance, "旺财2");
System.out.println(instance); //你好!我是旺财2
// 获取Deprecated类的注解,判断是否废弃
Annotation annotation = clazz.getAnnotation(Deprecated.class);
System.out.println("Is Deprecated: " + (annotation != null));
}
}
3.执行结果:
Class Name: Dog
Modifiers:
Package: com.xxx.abcd
旺财: 2024旺旺旺...
Field Value: 旺财
你好!我是旺财2
Is Deprecated: false
Process finished with exit code 0
这个示例中,我们定义了一个 Dog 类,它具有私有字段 name 和两个方法 doSomething() 和 toString() 。在 ReflectExample 类中,我们使用反射来获取类的信息、创建对象实例、获取和调用方法、获取和设置字段的值,以及获取类的注解。
文章来源:https://blog.csdn.net/qq_36382892/article/details/135418009
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!