鱼C论坛

 找回密码
 立即注册
查看: 37|回复: 1

请生动形象、完整细致地讲解一下Java中注解的用法和语法规则,要求条分缕析。

[复制链接]
发表于 昨天 22:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
尤其是元注解:
@Target
@Retention
@Inherited
@Documented
@Repeatable
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 昨天 22:06 | 显示全部楼层
Java注解(Annotation)详解

注解(Annotation)是Java中用于添加元数据的特殊语法,相当于代码的标签。下面通过语法规则元注解应用场景三部分展开说明:

一、基本语法
  • 定义注解:
    public @interface 注解名称 {
        数据类型 属性名() default 默认值; // 类似接口方法
    }
  • 使用示例:
    @MyAnnotation(name = "示例", version = 1)
    public class Demo {}


二、核心元注解
这些注解用于修饰其他注解的定义:

  • @Target:指定注解作用目标
    @Target(ElementType.METHOD) // 只能标注方法
    public @interface TestAnnotation {}
    支持的ElementType类型:
    • TYPE(类/接口/枚举)
    • FIELD(字段)
    • METHOD(方法)
    • PARAMETER(参数)
    • CONSTRUCTOR(构造器)
    • LOCAL_VARIABLE(局部变量)
    • ANNOTATION_TYPE(注解)
    • PACKAGE(包)

  • @Retention:控制注解生命周期
    @Retention(RetentionPolicy.RUNTIME) // 运行时可见
    public @interface RuntimeAnnotation {}
    策略说明:
    • SOURCE:仅源码保留(如@Override)
    • CLASS:编译后保留(默认值)
    • RUNTIME:运行时可通过反射读取

  • @Inherited:允许子类继承父类注解
    @Inherited
    @Retention(RetentionPolicy.RUNTIME)
    public @interface InheritableAnnotation {}
  • @Documented:使注解出现在Javadoc中
    @Documented
    public @interface DocAnnotation {}
  • @Repeatable:允许重复标注(需容器注解)
    @Repeatable(Fish.class)
    public @interface FishFood {
        String value();
    }
    
    public @interface Fish {
        FishFood[] value();
    }
    
    // 使用示例
    @FishFood("虾米")
    @FishFood("海藻")
    public class Aquarium {}


三、典型应用场景
  • 编译检查:@Override、@Deprecated
  • 框架配置:Spring的@Autowired
  • 代码生成:Lombok的@Data
  • 单元测试:JUnit的@Test


四、反射读取注解示例
Class<Demo> clazz = Demo.class;
if(clazz.isAnnotationPresent(MyAnnotation.class)){
    MyAnnotation annotation = clazz.getAnnotation(MyAnnotation.class);
    System.out.println("Name: " + annotation.name());
}

提示:合理使用注解可以使代码更简洁,但要避免过度设计。元注解就像注解的基因,决定了注解的基础特性。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-3 20:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表