Java--------注解

原创 2012年03月25日 00:31:51

android培训java培训、期待与您交流!

       注解是JDK1.5的新特性。它是一种标记,在程序中加了注解就相当于为程序加了某种标记。加标记后javac编译器或者开发工具和其他程序通过反射机制来了解你编写的类有没有什么标记,该类中如果有某种标记,那么就会做与其对应的事情。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
      在java.lang中提供了三种的注解:
     @SuppressWarnings(“deprecation”):表示压制警告,在程序中调用了已经不使用了的方法的时候可以使用这个来告诉编译器,不要发出警告。把警告压制
     @Deprected:表示这个已经废弃了。主要是告诉在你使用的时候,不建议你使用这个,可能有更好的方法供你使用。
     @Override:表示重写,在代码中你要重写某个方法的时候,加上这个标记,可以防止错误。比如在复写equals(Object obj)的时候,你把Object这个写成别的类了,那么就会出错的。
      注解的使用在后续的学习中,如几种框架中应用很广泛,因此这几种注解显然不够。在这里老师讲了自己定义的注解,注解在定义的时候其实和接口比较类似:@interface注解名称这个注解定义后,在别的类中使用的时候,就相当于给这个注解声明了一个实例。然后再另外的一个类中通过反射来检测这个拥有注解类的类是否拥有注解,这是实际开发时候的工作步骤。 
      在自定义注解定义完后,通过一个测试类的main方法来测试这个注解该类的注解是不是存在,并且打印该注解的时候,发现什么都没有打印出来,视频中老师又引出了一个注解的注解,是用来说明这个自己定义注解的生命阶段:
      RetentionPolicy.SOURCE---------java源文件;
      RetentionPolicy.CLASS---------class文件(默认值就是该阶段);
      RetentionPolicy.Runtime-------内存中的字节码;
     上面说的这三种生命周期标志要通过元注解来使用,第一种表示这个注解只是在java源文件中出现的,javac编译的时候会把这种类型的注解剔除掉的。而第二种注解是在class文件中存在的,到内存中就不在存在了。至于最后一种是一直到运行时都存在的注解。
       当把这注解的注解(就是元注解)加上:
      import java.lang.annotation.*;
      @Retention(RetentionPolicy.RUNTIME)
       public @interface ItcastAnnotation {}
       在在检测类中进行检测的时候通过反射就会打印出这个注解的名称。(因为要使用字节码,但是它在内存中才会生成的);@Deprected----是RetentionPolicy.Runtime,因为在调用某个类的方法的时候是把该类字节码调出来后才知道,所以必须到运行期才行的。
还可以在注解上加一些属性,这些属性都是通过抽象方法的形式来定义的:如
       @Retention(RetentionPolicy.RUNTIME)
       @Target({ElementType.METHOD,ElementType.TYPE})
       public @interface ItcastAnnotation {
       String color()default "blue";
       String value();
        }在这个注解里有两个属性,那么在类上进行注解的时候应该赋予初值才行。
       @ ItcastAnnotation(color=”red”,value=”xyz”)然后再检测类中通过反射得到该类的字节码后就可以得到这个注解的属性值了。
        数组类型的属性:在上面代码中加入int[] arrayAttr();这个属性,在类中使用的时候如果该数组只有一个元素那么就可以不用写中括号了,直接是arrayAttr=某个值;就OK了。同时属性可以是枚举类型的还有注解类型的。这些都可充当注解的属性。

android培训java培训、期待与您交流!

java--------动态的经典例题

多态一: 什么是动态:    同一行为的多种不同表达,或者同一行为的多种不同实现就叫做多态。 1)Person,Student,Teacher之间的关系 2)有一个“车”的父类,宝马继承自车,奔驰继承...
  • yangxin_blog
  • yangxin_blog
  • 2015年11月06日 09:51
  • 1060

Java--------面向对象

1.java中只允许单继承,子类具有父类全部的变量与方法。 2.JAVA成员默认权限为Default,在同一个包内可见。 3.private私有,只能在该类内访问。 4.protested同一个...
  • wl6965307
  • wl6965307
  • 2013年02月07日 18:27
  • 371

java--------【对象之间的关系】

Java中的对象之间的关系有多种,在此之前我着实对这些只是有一点模糊的概念,知道有一次在面试中被面试官问道,才有了这些概念。那就今天借这个机会同大家分享下这个知识点,同时我也在去学习一遍。     ...
  • Toplifeww
  • Toplifeww
  • 2014年12月30日 09:30
  • 1947

java--------学习之《网络编程》

网络编程   网络通讯的三要素:     IP地址:网络中设备的标识,网络数据传输中,首先要找到对方法IP地址。       端口号:数据要发送到对方指定的应用程序上。为了标识这些应用程序,所以给这些...
  • u012671126
  • u012671126
  • 2014年10月21日 03:26
  • 196

java--------学习之《面对像一》

《面对像一》   面对像的概念 面向对象有三个特征:封装 、继承、多态。 用生活中的食物举例 例如:自己在家吃饭需要自己做饭,这个就是“面向过程”。 例如:自己上饭店吃饭,想吃什么就跟服务员说,这个就...
  • u012671126
  • u012671126
  • 2014年08月29日 14:16
  • 182

java--------学习之《String 的应用》

String类适用于描述字符串事物。 那么它就提供了多个方法对字符串进行操作。   String s1 = “abc”;//s1是一个类类型变量,“abc”是一个对象。                ...
  • u012671126
  • u012671126
  • 2014年09月12日 13:26
  • 209

java--------学习之《IO流》一

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- IO(Input,Output)流 流按流向分为:输入流,输出流 他们操作的数据分为两种:字节...
  • u012671126
  • u012671126
  • 2014年09月23日 04:31
  • 188

java--------学习之《多线程》

线程为何物? 线程:就是进程中的一个独立的控制单元。线程在控制着进程的执行。 (何为“进程”呢?) 进程:是一个正在执行的中的程序。 每一个进程执行都有一个执行顺序,该顺序是一个执行路径,也可以称之为...
  • u012671126
  • u012671126
  • 2014年09月08日 22:08
  • 242

Java--------异常处理

异常是指java程序运行期出现的错误,可以生成一个异常类对象,该类封装了异常信息。并交给Java运行时系统。 用catch可以捕捉异常,做出相应处理。 int[] end = {1,2,3};...
  • wl6965307
  • wl6965307
  • 2013年02月10日 10:24
  • 386

java--------学习之《IO流》二

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • u012671126
  • u012671126
  • 2014年09月23日 04:38
  • 259
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java--------注解
举报原因:
原因补充:

(最多只允许输入30个字)