关于注解学习

1.注解
    注解的解析
        通过反射技术,来获取注解中的属性的值
        
        注意:想要对注解进行解析,前提条件@Retention(RetentionPolicy.RUNTIME)
        
        1.获取类上面的注解的属性值
            public class Demo01 {
                public static void main(String[] args) throws Exception {
                    //使用反射技术获取类上面的注解的属性值:tom,18
                    
                    //获取字节码文件对象
                    Class clazz = Class.forName("com.annotation.A");
                    
                    //获取类上面的注解对象
                    //Annotation annotation = clazz.getAnnotation(MyAnno1.class);
                    MyAnno1 myanno = (MyAnno1)clazz.getAnnotation(MyAnno1.class);
                    
                    System.out.println(myanno);
                    
                    //获取name和age的属性值
                    String name = myanno.name();
                    int age = myanno.age();
                    System.out.println(name + "..." + age);
                }
            }

            @MyAnno1(name="tom", age=18)
            class A {
                
            }
        
        2.获取方法上面的注解的属性值
            public class Demo02 {
                public static void main(String[] args) throws Exception {
                    //获取字节码文件对象
                    Class clazz = Class.forName("com.annotation.B");
                    
                    //获取show方法对象
                    Method method = clazz.getMethod("show");
                    
                    //获取方法上的注解对象
                    MyAnno1 myAnno1 = method.getAnnotation(MyAnno1.class);
                    
                    //获取name和age属性值
                    String name = myAnno1.name();
                    int age = myAnno1.age();
                    System.out.println(name + "..." + age);
                }
            }

            class B {
                @MyAnno1(name="jerry",age=19)
                public void show() {
                    
                }
            }
        
        3.获取属性上面的注解的属性值?
            public class Demo03 {
                public static void main(String[] args) throws Exception {
                    //获取字节码文件对象
                    Class clazz = Class.forName("com.annotation.C");
                    
                    //获取name属性对象
                    Field field = clazz.getDeclaredField("name");
                    
                    //获取name属性上的注解对象
                    MyAnno1 myAnno1 = field.getAnnotation(MyAnno1.class);
                    
                    //获取name和age属性值
                    String name = myAnno1.name();
                    int age = myAnno1.age();
                    System.out.println(name + "..." + age);
                }
            }

            class C {
                @MyAnno1(name="rose",age=20)
                private String name;
            }
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值