Java代码中前面带@是什么意思
答案:6 悬赏:80 手机版
解决时间 2021-02-15 07:58
- 提问者网友:留有余香
- 2021-02-14 20:37
Java代码中前面带@是什么意思
最佳答案
- 五星知识达人网友:举杯邀酒敬孤独
- 2021-02-14 21:15
这是一个Annotation
Annotation接口的实现类: Documented, Inherited, Retention, Target 都是用来定义自己定义的Annotation类的。
1. 注解(Annotation)类,以@interface 修饰 ,不能显示(explicit)extends或implements任何类
如:
java 代码
public @interface DefineAnnotation {
}
这种没有任何属性的Annotation类,也叫标识Annotation
2. 定义属性
java 代码
//属性必须加个小括号
public String value() ;
//有默认值的属性
public String value() default "aaa";
完整定义如下:
java 代码
//注解Annotation类不能显示(explicit)extends或implements任何类
//不定义任何属性就叫maket annotation
public @interface DefineAnnotation {
//定义一个属性,有属性的话,必须赋值,除非有默认default
public String value() default "aaa";
}
3.使用Annotation,有默认值的可以不用传参数,也可以传递参数。没有默认值的,必须传递参数。
如:
java 代码
public class TestAnnotation {
// @DefineAnnotation 有默认值的第一种使用方式
// @DefineAnnotation() 有默认值的第二种使用方式
@DefineAnnotation("ttitfly")
public void say(){
System.out.println("say hello");
}
public static void main(String[] args){
TestAnnotation ta = new TestAnnotation();
ta.say();
}
}
4. Retention (保存)
所有的Annotation类都实现了Annotation接口
@Retention本身就是个Annotation(注解)类
它的值是个enum枚举类型的RetentionPolicy,该枚举类型RetentionPolicy有三个值RUNTIME (会被JVM加载,并可以通过反射来获得到Annotation类的信息) ,CLASS (不会被JVM加载),Source
@Retention的值标识自己定义的Annotation(注解)类 是属于哪种保存策略,将来哪个类如果使用了这个自定义的注解类,将会使用这种保存策略
如:
java 代码
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
//所有的Annotation类都实现了Annotation接口
//@Retention本身就是个Annotation(注解)类
//它的值是个enum枚举类型的RetentionPolicy,该枚举类型RetentionPolicy有三个值RUNTIME (会被JVM加载,并可以通过反射来获得到Annotation类的信息) ,CLASS (不会被JVM加载),Source
//@Retention的值标识自己定义的Annotation(注解)类 是属于哪种保存策略,将来哪个类如果使用了这个自定义的注解类,将会使用这种保存策略
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String hello() default "ttitfly";
String world();
}
java 代码
//使用自己定义的Annotation类
public class MyTest {
//一个方法可以有多个注解类
@Deprecated
@MyAnnotation(hello="china",world="earth")
public void say(){
System.out.println("say hello");
}
}
java 代码
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
Annotation接口的实现类: Documented, Inherited, Retention, Target 都是用来定义自己定义的Annotation类的。
1. 注解(Annotation)类,以@interface 修饰 ,不能显示(explicit)extends或implements任何类
如:
java 代码
public @interface DefineAnnotation {
}
这种没有任何属性的Annotation类,也叫标识Annotation
2. 定义属性
java 代码
//属性必须加个小括号
public String value() ;
//有默认值的属性
public String value() default "aaa";
完整定义如下:
java 代码
//注解Annotation类不能显示(explicit)extends或implements任何类
//不定义任何属性就叫maket annotation
public @interface DefineAnnotation {
//定义一个属性,有属性的话,必须赋值,除非有默认default
public String value() default "aaa";
}
3.使用Annotation,有默认值的可以不用传参数,也可以传递参数。没有默认值的,必须传递参数。
如:
java 代码
public class TestAnnotation {
// @DefineAnnotation 有默认值的第一种使用方式
// @DefineAnnotation() 有默认值的第二种使用方式
@DefineAnnotation("ttitfly")
public void say(){
System.out.println("say hello");
}
public static void main(String[] args){
TestAnnotation ta = new TestAnnotation();
ta.say();
}
}
4. Retention (保存)
所有的Annotation类都实现了Annotation接口
@Retention本身就是个Annotation(注解)类
它的值是个enum枚举类型的RetentionPolicy,该枚举类型RetentionPolicy有三个值RUNTIME (会被JVM加载,并可以通过反射来获得到Annotation类的信息) ,CLASS (不会被JVM加载),Source
@Retention的值标识自己定义的Annotation(注解)类 是属于哪种保存策略,将来哪个类如果使用了这个自定义的注解类,将会使用这种保存策略
如:
java 代码
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
//所有的Annotation类都实现了Annotation接口
//@Retention本身就是个Annotation(注解)类
//它的值是个enum枚举类型的RetentionPolicy,该枚举类型RetentionPolicy有三个值RUNTIME (会被JVM加载,并可以通过反射来获得到Annotation类的信息) ,CLASS (不会被JVM加载),Source
//@Retention的值标识自己定义的Annotation(注解)类 是属于哪种保存策略,将来哪个类如果使用了这个自定义的注解类,将会使用这种保存策略
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String hello() default "ttitfly";
String world();
}
java 代码
//使用自己定义的Annotation类
public class MyTest {
//一个方法可以有多个注解类
@Deprecated
@MyAnnotation(hello="china",world="earth")
public void say(){
System.out.println("say hello");
}
}
java 代码
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
全部回答
- 1楼网友:迷人又混蛋
- 2021-02-15 02:01
的确是注释。
- 2楼网友:鸠书
- 2021-02-15 00:37
接口的注释。
- 3楼网友:轻熟杀无赦
- 2021-02-15 00:11
这个像是spring的注入之类的,好像是
- 4楼网友:你哪知我潦倒为你
- 2021-02-14 22:39
这个表示注解,不同的注解对应不同的功能,可以专门学习一下,可以自定义注解
- 5楼网友:鱼忧
- 2021-02-14 21:25
相当于“注释” 比如@version 就是版本号
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯