«

Java注解入门案例代码分析

时间:2024-7-13 14:22     作者:韩俊     分类: Java


这篇文章主要介绍“Java注解入门案例代码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java注解入门案例代码分析”文章能帮助大家解决问题。

Talk is cheap, show me the code.

定义注解

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyLoveForYou {
    String love();
}

定义类

public class Love {
    @MyLoveForYou(love="吾爱亦吾心")
    private String love;
    public String getLove() {
        return love;
    }
    public void setLove(String love) {
        this.love = love;
    }
    //重写 toString() 方法。
    @Override
    public String toString() {
        return "Love [love=" + love + "]";
    }
}

处理注解类

import java.lang.reflect.Field;

public class ProcessAnnotation {
    private static Love love;

    //创建 love 实例
    public static Love getLove(){
        Class<?> clazz = Love.class;
        try {
            Field field = clazz.getDeclaredField("love");
            field.setAccessible(true);
            MyLoveForYou  myLoveForYou = field.getAnnotation(MyLoveForYou.class);
            String fieldLove = myLoveForYou.love();
            try {
                love = (Love)clazz.newInstance();
            } catch (InstantiationException | IllegalAccessException e) {
                e.printStackTrace();
            }
            love.setLove(fieldLove);
        } catch (NoSuchFieldException | SecurityException e) {
            e.printStackTrace();
        }
        return love;
    }
}

测试

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class Test {
    public static void main(String[] args) throws 
    ClassNotFoundException, NoSuchMethodException, 
    SecurityException, InstantiationException, 
    IllegalAccessException, IllegalArgumentException, InvocationTargetException {
    //异常有点多,但是不用担心,其实只有三行代码。
        Love love = ProcessAnnotation.getLove();
        System.out.println(love.getLove());
        System.out.println(love.toString());
    }
}

测试结果

简单说明以下

这里就使用了一个非常简单的注解类,使用了两个最基础的元注解(元注解的意思就是: 修饰的是类的属性 保留到运行期)。
然后就可以使用注解了,简单的使用其实很简单,就像下面这样就像了。

@MyLoveForYou(love="吾爱亦吾心")

这里强调以下,单纯的使用注解是没有任何用的,注解需要借助专门的工具处理,这里定义一个简单的处理注解的类(这个类可能需要一点反射的知识,但是也不要紧,如果你只想知道注解的作用,也可以不用管它,记住用法就行了):

ProcessAnnotation

用法:这个类就是干一件事,给 love 赋值为 吾爱亦吾心
最后就是测试了,这里重写了toString() 方法,看起来更加直观一点。

标签: java

热门推荐