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进行投诉反馈,一经查实,立即删除!