day_31Java注解---Annotation
2015-12-02 08:00
916 查看
给编译器看的注释---Annotation
功能建立在反射机制之上,通过An可以对程序进行注释操作。
系统内建Anon、如何自定义、反射和n的关联,
以及如何通过ation生产Donted。
本章要点
掌握Annotation的相关概念
熟悉自定义Annotation的方法
了解反射和Annotation的关联
一、Annotation
Annotation 实际上表示的是一种注释的语法。
在java中最早的程序是提倡程序与配置代码相分离,
而最新的理论是将所有的配置直接写到程序之中,如果想完成这样的功能,就要使用Annotation。
伦理片 http://www.dotdy.com/
二、系统内建的Annotation 在jdk1.5之后的系统中,内建了3个Annotation:
@Override、@Deprecated、@SuppressWarinings。
2.1 @Override
表示进行正确的覆写操作
即使覆盖的方法名称写错了,也不会有任何的提示。
此时,为了保证程序可以正确地进行覆盖操作,在覆盖的时候可以明确地使用@Override表示方法是属于覆盖的操作。
代码案例:
Overridetest代码
package day30;
public class OverrideTest {
public static void main(String[] args) {
Student s = new Student();
System.out.print("..."+s.say());
}
}
class Person {
public String say() {
return "Person_say()";
}
}
//要求增加此类的子类,覆盖其方法
class Student extends Person {
/*为了保证程序可以正确地进行覆盖操作,
* 在覆盖的时候可以明确地使用@Override表示方法是属于覆盖的操作。*/
@Override
public String say() {
return "Student_say()";
}
}
运行结果:
...Student_say()
2.3@Deprecated
@Deprecated注释表示不建议使用的操作。
例如之前在讲解线程的时候,曾经讲解过线程中的stop()、resume()、suspend()等方法是不建议使用的。
代码案例:
Deprecatedtest代码
package day30;
public class DeprecatedTest {
public static void main(String[] args) {
System.out.print((new Info()).getInfo());
}
}
class Info {
/*@Deprecated注释表示不建议使用的操作。*/
@Deprecated
public String getInfo() {
return "getInfo()....";
}
}
运行结果:
getInfo()....
2.4 @SuppressWarnings
@SuppressWarnings表示的是压制警告。
如果有一些警告信息则可压制掉,不出现警告的提示。
@SuppressWarnings(“deprecation”)
使用SuppressWarnings操作的时候可以同时压制多个警告
通过SuppressWarnings的类,可以发现在此类中存在一个value的字符串数组。
Person类中既继承了Info类,又实现了序列化的接口,所有此时会出现多个警告。
或者可以明确的表示,是为SuppressWarnings中的value属性赋值。
代码案例:
Suppresswarningstest代码
package day30;
import java.io.Serializable;
public class SuppressWarningsTest {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
System.out.print((new Infos()).getInfos());
}
}
class Infos {
@Deprecated
public String getInfos() {
return "....getInfos";
}
}
@SuppressWarnings(value = {"serial","deprecation"})
class Persona extends Infos implements Serializable {
/*Person类中既继承了Info类,又实现了序列化的接口,所此时会出现多个警告。*/
}
运行结果:
....getInfos
三、自定义Annotation
影音先锋电影 http://www.iskdy.com/
3.1定义Annotation的语法
public @interface Annotation的名称{}
案例:
public @interface MyAnnotation{
}
如果现在使用此Annotation的话,若不在同一个包中,则需要导入,导入之后使用@的形式反问,语法@MyAnnotation
@MyAnnotation
public class Info{
}
在一个Annotation中实际上也可以定义若干个属性。
public @interface MyAnnotation{
public String key();
public String value();
}
在此时Annotation中定义了key和value两个变量,若此时要使用Annotation的话,则必须明确地给出具体的内容。
@MyAnnotation(key="MLDN",value="www.baidu.com")
如果现在希望为一个Annotation设置默认内容的话,可以通过default完成。
public @interface MyAnnotation{
public String key() default “LXX”;
public String value() default “HA”;
}
如果没有设置内容,则将默认值去除继续使用。
Annotation中的变量内容可以通过枚举指定范围。
public enum Color {
RED,GREEN,BLUE;
}
相关文章推荐
- Resultset转Bean工具类
- LoadRunner 调用webservice Internal error, please call customer support. Details: class java.lang.Objec
- JAVA类内存分配
- java线程wait,notify,yield,join方法
- Java编程艺术第三章
- 斐波那契数列(fabnacci)java实现
- MyEclipse (2015) 中创建简单的Maven项目的步骤(用于生成可执行jar文件)
- MyEclipse 2015优化技巧
- 在MyEclipse2015中上传项目到github的步骤
- Java开发环境
- java多线程同步 synchronized
- 【Java EE 学习 69 上】【struts2】【paramsPrepareParamsStack拦截器栈解决model对象和属性赋值冲突问题】
- 关于在java编程中遇到的一些细节学习(杂1)
- Spring-Struts2整合异常:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderLi
- Java语言基础之文件读写
- Java集合
- Java语言基础之正则表达式
- Java中继承thread类与实现Runnable接口的区别
- Java学习笔记---集合(二)Map
- BI Component开发(3)--处理输出