通过反射获取字段,方法,注解
来源:互联网 发布:达梦数据库下载网盘 编辑:程序博客网 时间:2024/05/29 08:17
自定义一个注解
//自己写的注解@interface表示注解 @Documented @Target(ElementType.METHOD)//添加在方法上的注解 @Retention(RetentionPolicy.RUNTIME)//在运行的时候public @interface Bwei { public String name() default "恩"; public int age() default 22;}User类里面
public class User { public String name; private String age; public User(){ } public User(String name, String age) { this.name = name; this.age = age; } //注解加在方法上 @Bwei(name ="恩恩",age = 23) public void sleep(){ System.out.println("User sleep = "); } public void eat(String eat,int time){ System.out.println("User eat ="+eat+""+time); } public void eat(String eat){ System.out.println("User eat ="+eat); } public String toString(){ return "User{" + "name='"+name+'\''+ ",age="+age+'}'; }}测试类里面的代码Test.java
/** * 反射注解 * */public class Test { //psvm public static void main(String[] args) { try { //获取到这个类 Class clazz = Class.forName("com.example.menglucywhh.day1128_create.User"); /* //获取当前类的所有构造方法,public和private Constructor[] constructors = clazz.getDeclaredConstructors(); for(Constructor constructor : constructors){ System.out.println("constructor = "+constructor); } Constructor constructor = constructors[1]; //设置允许访问 constructor.setAccessible(true); User user = (User) constructor.newInstance("1509D","11"); System.out.println("user = "+user.toString());*/ /* //通过参数的class获取指定的构造方法 Constructor constructor = clazz.getConstructor(String.class,String.class); //创建一个对象 User user = (User) constructor.newInstance("whw","20"); System.out.println(constructor); System.out.println("user = "+user.toString());*/ // Field[] fields = clazz.getFields(); /* User user = (User) clazz.newInstance(); //获取当前类的所有属性 Field[] fields = clazz.getDeclaredFields(); for (Field field:fields){ //设置可以访问private的属性 field.setAccessible(true); System.out.println("field ="+field); //设置user对象属性值为11,name和age都为11 field.set(user,"11"); //获取user对象的属性值 Object o = field.get(user); System.out.println("o = "+o); } System.out.println("user = "+user.toString());*/ /* //获取所有的方法 公有和私有 Method[] methods = clazz.getDeclaredMethods(); //创建一个对象 User user = (User) clazz.newInstance(); for(Method method : methods){ method.setAccessible(true); System.out.println("method = " + method); } Object toString = methods[0].invoke(user,null); //调用的是eat 参数是1509D Object eat = methods[1].invoke(user,"1509D"); System.out.println("toString = " + eat); //name 方法名 // String.class 参数的class 参数为string Method method = clazz.getMethod("eat",String.class); //执行 user对象身上的方法 参数是1509 method.invoke(user,"1509");*/ //操作注解 Method method = clazz.getMethod("sleep", null); //判断这个方法是否有这个注解 boolean isEmpty = method.isAnnotationPresent(Bwei.class); if(isEmpty){ //获取对应的注解 Bwei bwei = method.getAnnotation(Bwei.class); System.out.println("bwei = "+bwei.name()+ " "+bwei.age()); } } catch (Exception e) { e.printStackTrace(); } }}
阅读全文
0 0
- 通过反射获取字段,方法,注解
- 通过反射获取类属性字段 以及 调用类方法
- java反射通过字段名获取set、get方法
- java 通过反射获取注解
- java 通过反射获取注解
- Java通过反射获取自定义注解
- 利用反射获取类或者方法或者字段上的注解的值
- 利用反射获取类或者方法或者字段上的注解的值
- java 自定义注解annotation和通过反射获取注解
- android 自定义注解 通过反射获取注解属性值
- JAVA反射获取属性注解,类方法
- Java反射获取方法,执行方法,获取注解
- Vb.Net 通过反射获取类的字段值
- 《黑马程序员》 通过反射获取字节码文件中的字段
- 通过反射获取类属性字段的个数
- 通过反射获取静态常量字段的值
- 通过反射获取和设置对象私有字段的值?
- java之通过反射获取类中的注解值
- Mqtt精髓系列之连接建立过程
- 莱布尼兹乘积微分公式证明纠错
- 测试Mysql 事务隔离级别
- 数字图像处理matlab版第十二章
- HDOJ1061 Rightmost Digit
- 通过反射获取字段,方法,注解
- 二叉树的基本操作
- wake on lan 远程唤醒/远程开机中的所有设置细节(arp静态绑定解决长时间关机无法唤醒)
- 2015 ICPC 北京场E、F、G (计算几何)
- 动态规划专题训练
- Java并发编程:线程池的使用(非常棒,通俗易懂)
- Bitmap复用
- fastjson解析json时报错default constructor not found. class............. 原创 2014年09月10日 15:40:53 12040 实体类
- 大小排序