为了账号安全,请及时绑定邮箱和手机立即绑定

反射

标签:
Java
在类加载时, 会在内存中生成一份Object.class对象. 该对象为我们访问字节码文件提供了接口.
1. 获取Class对象
    1). Class<Person> clz = Class.forName("com.xxx.Person");
    2). Class<Proson> clz = com.xxx.Person.class;

2. 获取所有已经声明的构造函数, 并根据构造函数创建实例.
    Constructor[] constructors = clz.getDeclaredConstructors();
    constructors[0].setAccessible(true);
    constructors[0].newInstance();          //无参构造函数
    
3. 获取方法, 并调用
    Method m = clz.getMethod("setName",String.class);
    m.invoke(new Person(),"wangwu");
    
4. 获取注解的值
    Method[] methods = clz.getDeclaredMethods();
    for (Method method : methods) {
        if(method.isAnnotationPresent(Name.class)){
            Name name = method.getAnnotation(Name.class);
            System.out.println(name.value());
        }
    }

Name注解定义
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Name {
    String value() default "xiaoming";
}

Person对象定义
public class Person(){
    public Person(){}
    private String name;
    @Name(value="zhangsan")
    public void setName(String name){
        this.name = name;
    }
}
点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1
获赞与收藏
31

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消