博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java反射+注解案例
阅读量:5332 次
发布时间:2019-06-15

本文共 1966 字,大约阅读时间需要 6 分钟。

注解类代码,注解的属性可以有多个:

package reflect;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;/*** * java注解默认只会保留在字节码文件里面 * 运行期间注解会被抹掉 * 可以用@Retention来指定注解的保留时间 * 注: *     @Retention是元注解,即用来解释其他注解的注解 *     Retentionpolicy.RUNTIME是表示注解保留到运行时。 * @author zlq1252 * */@Retention(RetentionPolicy.RUNTIME)public @interface Test {    /*     * 注解的属性     *    *注解可以有多个属性。    *如果属性名为value时,可以不制定属性名(只有一个属性时)     */    public String value();}

 

方法类,在方法类的方法上加上注解代码如下:

package reflect;public class C {        public void f1() {        // TODO Auto-generated method stub        System.out.println("C'S f1");    }    @Test(value="淡淡")    public void hello() {        // TODO Auto-generated method stub        System.out.println("C'S hello");    }    @Test(value="洋洋")    public void bala() {        // TODO Auto-generated method stub        System.out.println("C'S bala");    }}

 

反射类代码,通过反射类获得所有具有代码注解的方法并执行,同时可以过的注解的属性:

package reflect;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Scanner;public class TestCase3 {    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {        // TODO Auto-generated method stub        Scanner sc = new Scanner(System.in);        String className = sc.nextLine();        Class clazz = Class.forName(className);        Object obj = clazz.newInstance();        Method[] methods = clazz.getDeclaredMethods();        for(Method mh:methods){            //获得加在方法前面的@Test            Test test = mh.getDeclaredAnnotation(Test.class);            System.out.println("@Test:"+test);            //执行带有注解的方法            if(test!=null){                mh.invoke(obj);                //读取@Test的属性值                String v1 = test.value();                System.out.println("@Test的属性值:"+v1);            }        }    }}

 

转载于:https://www.cnblogs.com/topzhao/p/10266535.html

你可能感兴趣的文章
App Store最新审核指南(2015年3月更新版)
查看>>
织梦MIP文章内容页图片适配百度MIP规范
查看>>
[Kali_BT]通过低版本SerialPort蓝牙渗透功能手机
查看>>
C语言学习总结(三) 复杂类型
查看>>
HNOI2018
查看>>
【理财】关于理财的网站
查看>>
Ubunt中文乱码
查看>>
《当幸福来敲门》读后
查看>>
【转】系统无法进入睡眠模式解决办法
查看>>
省市县,循环组装,整合大数组
查看>>
stm32中字节对齐问题(__align(n),__packed用法)
查看>>
like tp
查看>>
posix多线程有感--线程高级编程(线程属性函数总结)(代码)
查看>>
spring-使用MyEcilpse创建demo
查看>>
DCDC(4.5V to 23V -3.3V)
查看>>
kettle导数到user_用于left join_20160928
查看>>
activity 保存数据
查看>>
typescript深copy和浅copy
查看>>
linux下的静态库与动态库详解
查看>>
hbuilder调底层运用,多张图片上传
查看>>