首页 > 编程语言 >Java中自定义注解

Java中自定义注解

时间:2023-08-02 18:02:19浏览次数:33  
标签:Java String 自定义 value public 注解 AnnotationDemo class

1.注解的作用

  • 提供元数据信息
  • 编译时检查
  • 运行时处理
  • 代码分析
  • 与框架集成

2.基本步骤

1.使用@interface关键字定义一个注解类型

public @interface AnnotationDemo {
    //注解成员
    String value();
    int num() default 0;
}

2.在注解类型中定义成员变量,该注解使用时可以设置这些成员的值。注解的成员变量的类型可以是基本类型、string、class、枚举类型、其它注解类型或上述类型的数组。

3.可以给注解的成员变量设置默认值,使用defalut关键字,如果不设置默认值则表示必须在使用注解时指定该成员的值。

4.在代码中使用自定义注解,格式为@注解名(成员名1=值1,成员名2=值2......)

@AnnotationDemo(value = "testAnnotion") //使用自己定义的注解
public class AnnotationTest {
}

5.自定义注解可以标记在类、方法、字段、参数等元素上,对于不同的元素可以使用不同的元注解来限制注解的使用范围。

@AnnotationDemo(value = "testAnnotion")
public class AnnotationTest {
	//作用在方法上
    @AnnotationDemo(value = "method")
    public void test1(/*作用在参数上*/@AnnotationDemo(value = "param") String str){
        //作用在变量上
        @AnnotationDemo(value = "field")
        String a;
    }

}

6.获取注解的值

@Target({ElementType.TYPE, ElementType.METHOD})//意味这个注解可以作用在方法和类上
@Retention(RetentionPolicy.RUNTIME)//注解作用在运行阶段
public @interface AnnotationDemo {
    //注解成员
    String value();
    int num() default 0;
}
@AnnotationDemo(value = "testAnnotion")
public class AnnotationTest {

}
class test{
    public static void main(String[] args) {
        //通过反射获取类
        Class c = AnnotationTest.class;
        //判断该类是否存在自定义的注解AnnotationDemo
        if (c.isAnnotationPresent(AnnotationDemo.class)){
            AnnotationDemo annotation = (AnnotationDemo) c.getAnnotation(AnnotationDemo.class);
            System.out.println(annotation.value());
            System.out.println(annotation.num());
        }
    }
}

运行结果:

Java中自定义注解_java


标签:Java,String,自定义,value,public,注解,AnnotationDemo,class
From: https://blog.51cto.com/u_16194379/6941063

相关文章

  • @Transactional 注解下,事务失效的七种场景
    1、异常被捕获后没有抛出当异常被捕获后,并且没有再抛出,那么deleteUserA是不会回滚的@Transactionalpublic void deleteUser() {    userMapper.deleteUserA();    try {        int i = 1 / 0;        userMapper.deleteUserB();    } ca......
  • Java实践项目 - 商品分类
    Smiling&Weeping----好想回到那个拉钩许诺的年代 1.1商品分类的思路:一次性查询三级分类(一级为美味麒麟榜,二级为闭眼入,第三级为商品)优点:只需要一次查询,根据一级分类显示二级分类是响应较快缺点:数据库查询效率较低,页面首次加载速......
  • Java实践项目 - 购物车模块
    Smiling&Weeping----世界上美好的东西不太多,立秋傍晚从河对岸吹来的风,加入购物车1.数据创建--创建t_cartCREATETABLEt_cart(cidINTAUTO_INCREMENTCOMMENT'购物车数据id',uidINTNOTNULLCOMMENT'用户id',pidINTNOTNULLCOMMENT......
  • JAVA-Springboot实践项目-用户注册
    Smiling&Weeping----我本没喜欢的人,见你的次数多了,也就有了。1.创建数据表1.1.选中数据表:usestore1.2.创建t_user表:2创建用户实......
  • java报错:unable to find valid certification path to requested target
    问题发现unabletofindvalidcertificationpathtorequestedtarget当我使用java代码访问某个URL的时候,报了这个错误,经过查询发现需要安装证书到java环境,所以记录一下。下载证书我使用的是chrome浏览器,点击地址栏左边小锁,选择第一个选项。然后选择证书有效。在弹出的......
  • Java实践项目 - 用户登录
    Smiling&Weeping----以花祈愿,祝你平安 当用户输入用户名和密码将数据提交给数据库进行查询,如果存在对应的用户名和密码,则表示登陆成功,登录成功之后跳转到系统的主页就是index.html页面,跳转在前端使用jQuery来完成1.登录-持久层1.......
  • Java编程-依据类图与流程图实现对应接口
    类图依据与流程图依据封装常见的HTTP状态码RegisterController接口register(Stringname,Stringpwd)login(Stringname,Stringpwd)NovelController接口addNovel()asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfNovelContentController接口asdfasdfasdfasdfasdf......
  • 学习Java的第12天
    packageoperator;publicclassDemo04{publicstaticvoidmain(String[]args){//++--自增,自减一元运算符inta=3;intb=a++;//执行完这行代码后,先给b赋值,再自增//a=a+1System.out.println(a);//a=......
  • 2023年Java学习路线,史上最全Java学习路线-文中有送书福利
    小伙伴们大家好,这里是动力节点,我们从2009年开始一直在从事Java培训到今年已经整14年了,虽然现在不缺培训机构,更不缺Java培训,但是像我们这么多年专注这一件事的应该也不多。我们只希望在“专业”两个字上面不断精进,给每一位想学Java的同学带来更好的资源和学习规划。我们深知,有很多同......
  • idea查看java代码汇编指令
    将下列jar包放入到jre的bin目录下面   hsdis-amd64.dll指定java的jvm参数-server-Xcomp-XX:+UnlockDiagnosticVMOptions-XX:+PrintAssembly-XX:CompileCommand=compileonly,*VolitaleDemo.main运行......