注解有啥作用,啥时候用注解。Java中怎么样实现注解的构造函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了注解有啥作用,啥时候用注解。Java中怎么样实现注解的构造函数相关的知识,希望对你有一定的参考价值。
注释起到解释说明的作用 如果你有几万行代码 你写完后一个月后 你再看的话,或者你看别人的程序的话, 如果没有注释 有些地方你也不知道什么意思。构造函数 就是 你写完一个java类文件 在类文件中 写一个函数 函数名同方法名没有返回值 供初始化类的对象用的,默认有个无参的构造函数追问
哥,我问的是注解。
参考技术A java.lang.annotation.Retention可以在您定义Annotation型态时,指示编译器如何对待您的自定义 Annotation,预设上编译器会将Annotation资讯留在class档案中,但不被虚拟机器读取,而仅用于编译器或工具程式运行时提供资讯。在使用Retention型态时,需要提供java.lang.annotation.RetentionPolicy的列举型态:
package java.lang.annotation;
public enum RetentionPolicy
SOURCE, //编译器处理完Annotation资讯后就没事了
CLASS, //编译器将Annotation储存于class档中,预设
RUNTIME //编译器将Annotation储存于class档中,可由VM读入
RetentionPolicy为SOURCE的例子是SuppressWarnings,这个资讯的作用仅在告知编译器抑制警讯,所以不必将这个资讯储存于class档案。
RetentionPolicy为RUNTIME的时机,可像是您使用Java设计一个程式码分析工具,您要VM读出Annotation资讯,以在分析程式中使用,搭配Reflection机制,就可以达到这个目的。
在J2SE 5.0中新增了java.lang.reflect.AnnotatedElement这个介面,当中定义有四个方法:
public Annotation getAnnotation(Class annotationType);
public Annotation[] getAnnotations();
public Annotation[] getDeclaredAnnotations();
public boolean isAnnotationPresent(Class annotationType);
Class、Constructor、Field、Method、Package等类别,都实作了AnnotatedElement这个介面,所以您可以从这些类别的实例上,分别取得标示于其上的Annotation与其资讯,如果RetentionPolicy为RUNTIME的话。
举个例子来说,假设您设计了以下的Debug Annotation:
* Debug.java
package onlyfun.caterpillar;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface Debug
String value();
String name();
由于RetentionPolicy为RUNTIME,编译器在处理Debug Annotation时,会将之编译至class档中,并可以VM读出Annotation资讯,接着我们将Debug用于程式中:
* SomeObject.java
package onlyfun.caterpillar;
public class SomeObject
@Debug(
value = "unit",
name = "debug1"
)
public void doSomething()
// ....
可以设计一个工具程式来读取Annotation资讯:
* DebugTool.java
package onlyfun.caterpillar;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
public class DebugTool
public static void main(String[] args)
throws NoSuchMethodException
Class<SomeObject> c = SomeObject.class;
Method method = c.getMethod("doSomething");
if(method.isAnnotationPresent(Debug.class))
System.out.println("@Debug is found.");
Debug debug = method.getAnnotation(Debug.class);
System.out.println("\tvalue = " + debug.value());
System.out.println("\tname = " + ());
else
System.out.println("@Debug is not found.");
Annotation[] annotations = method.getAnnotations();
for(Annotation annotation : annotations)
System.out.println(
annotation.annotationType().getName());
程式的执行结果如下:
@Debug is found.
value = unit
name = debug1
onlyfun.caterpillar.Debug
参考资料:http://baike.baidu.com/view/749643.htm#4
参考技术B 你说的注解是指注释么?JAVA里有三种注释,第一种单行注释://需要注释的语句,第二种多行注释:/*语句开头…语句结尾*/,第三种是函数功能的注释,相当是解释吧:/** *描述函数功能 */追问@ 开头的 比如说 @overreid
参考技术C spring有个注解注入。还有注解有助于反射生成方法的时候,屏蔽掉某些不需要的方法 参考技术D 楼主说的是@annotation
百度一下,网上好多的。 Thinking in Java里面也说得很详细,楼主可以下一个电子版的放着,随时查阅。本回答被提问者采纳
java注解中apiignore是啥意思
参考技术A @ApiIgnore 加注解在类或者方法上表示在swagger页面,忽略掉这个类或者方法,不显示 参考技术B 项目继承了查看测试接口的swagger。@ApiIgnore是为了让注解忽略这个API 参考技术C 定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
作用分类:
①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】
以上是关于注解有啥作用,啥时候用注解。Java中怎么样实现注解的构造函数的主要内容,如果未能解决你的问题,请参考以下文章