注解有什么作用,什么时候用注解。Java中怎么样实现注解的构造函数

 我来答
战歌王朝
2011-06-20 · TA获得超过725个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:131万
展开全部
注释起到解释说明的作用 如果你有几万行代码 你写完后一个月后 你再看的话,或者你看别人的程序的话, 如果没有注释 有些地方你也不知道什么意思。
构造函数 就是 你写完一个java类文件 在类文件中 写一个函数 函数名同方法名没有返回值 供初始化类的对象用的,默认有个无参的构造函数
追问
哥,我问的是注解。
唔製
2011-06-20 · TA获得超过1146个赞
知道小有建树答主
回答量:456
采纳率:0%
帮助的人:576万
展开全部
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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
244527697
2011-06-20 · TA获得超过264个赞
知道小有建树答主
回答量:306
采纳率:0%
帮助的人:202万
展开全部
你说的注解是指注释么?JAVA里有三种注释,第一种单行注释://需要注释的语句,第二种多行注释:/*语句开头…语句结尾*/,第三种是函数功能的注释,相当是解释吧:/**           *描述函数功能      */
追问
@ 开头的 比如说 @overreid
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-06-20 · TA获得超过1243个赞
知道小有建树答主
回答量:2126
采纳率:55%
帮助的人:672万
展开全部
spring有个注解注入。
还有注解有助于反射生成方法的时候,屏蔽掉某些不需要的方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lmdy2001
2011-06-20 · TA获得超过592个赞
知道小有建树答主
回答量:491
采纳率:0%
帮助的人:159万
展开全部
楼主说的是@annotation
百度一下,网上好多的。 Thinking in Java里面也说得很详细,楼主可以下一个电子版的放着,随时查阅。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式