在类加载时, 会在内存中生成一份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人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦