java注解spring注解 详解.docx

上传人:b****1 文档编号:1620356 上传时间:2023-05-01 格式:DOCX 页数:61 大小:45.63KB
下载 相关 举报
java注解spring注解 详解.docx_第1页
第1页 / 共61页
java注解spring注解 详解.docx_第2页
第2页 / 共61页
java注解spring注解 详解.docx_第3页
第3页 / 共61页
java注解spring注解 详解.docx_第4页
第4页 / 共61页
java注解spring注解 详解.docx_第5页
第5页 / 共61页
java注解spring注解 详解.docx_第6页
第6页 / 共61页
java注解spring注解 详解.docx_第7页
第7页 / 共61页
java注解spring注解 详解.docx_第8页
第8页 / 共61页
java注解spring注解 详解.docx_第9页
第9页 / 共61页
java注解spring注解 详解.docx_第10页
第10页 / 共61页
java注解spring注解 详解.docx_第11页
第11页 / 共61页
java注解spring注解 详解.docx_第12页
第12页 / 共61页
java注解spring注解 详解.docx_第13页
第13页 / 共61页
java注解spring注解 详解.docx_第14页
第14页 / 共61页
java注解spring注解 详解.docx_第15页
第15页 / 共61页
java注解spring注解 详解.docx_第16页
第16页 / 共61页
java注解spring注解 详解.docx_第17页
第17页 / 共61页
java注解spring注解 详解.docx_第18页
第18页 / 共61页
java注解spring注解 详解.docx_第19页
第19页 / 共61页
java注解spring注解 详解.docx_第20页
第20页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java注解spring注解 详解.docx

《java注解spring注解 详解.docx》由会员分享,可在线阅读,更多相关《java注解spring注解 详解.docx(61页珍藏版)》请在冰点文库上搜索。

java注解spring注解 详解.docx

java注解spring注解详解

基本内置注解

@Overridejava中覆写

@Deprecated的作用是对不应该在使用的方法添加注释,当编程人员使用这些方法时,将会在编译时显示提示信息,它与javadoc里的

@deprecated标记有相同的功能,准确的说,它还不如javadoc

@deprecated,因为它不支持参数

@SuppressWarnings,其参数有:

deprecation,使用了过时的类或方法时的警告

unchecked,执行了未检查的转换时的警告

fallthrough,当Switch程序块直接通往下一种情况而没有Break时的警告

path,在类路径、源文件路径等中有不存在的路径时的警告

serial,当在可序列化的类上缺少serialVersionUID定义时的警告

finally,任何finally子句不能正常完成时的警告

all,关于以上所有情况的警告

自定义注释

它类似于新创建一个接口类文件,但为了区分,我们需要将它声明为@interface,如:

public@interfaceNewAnnotation{}............

java中的注解机制

2010-04-2212:

42

注解(Annotation)为我们在代码中天界信息提供了一种形式化的方法,是我们可以在稍后

某个时刻方便地使用这些数据(通过解析注解来使用这些数据)。

   注解的语法比较简单,除了@符号的使用以外,它基本上与java的固有语法一致,java内置了三种

注解,定义在java.lang包中。

     @Override表示当前方法是覆盖父类的方法。

     @Deprecated表示当前元素是不赞成使用的。

     @SuppressWarnings表示关闭一些不当的编译器警告信息。

下面是一个定义注解的实例

Java代码

packageTest_annotation;   

  

importjava.lang.annotation.Documented;   

importjava.lang.annotation.Inherited;   

importjava.lang.annotation.Retention;   

importjava.lang.annotation.Target;   

importjava.lang.annotation.ElementType;   

importjava.lang.annotation.RetentionPolicy;   

  

/*  

*元注解@Target,@Retention,@Documented,@Inherited  

*   

*    @Target表示该注解用于什么地方,可能的ElemenetType参数包括:

  

*        ElemenetType.CONSTRUCTOR构造器声明  

*        ElemenetType.FIELD域声明(包括enum实例)  

*        ElemenetType.LOCAL_VARIABLE局部变量声明  

*        ElemenetType.METHOD方法声明  

*        ElemenetType.PACKAGE包声明  

*        ElemenetType.PARAMETER参数声明  

*        ElemenetType.TYPE类,接口(包括注解类型)或enum声明  

*           

*    @Retention表示在什么级别保存该注解信息。

可选的RetentionPolicy参数包括:

  

*        RetentionPolicy.SOURCE注解将被编译器丢弃  

*        RetentionPolicy.CLASS注解在class文件中可用,但会被VM丢弃  

*        RetentionPolicy.RUNTIMEVM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。

  

*           

*    @Documented将此注解包含在javadoc中  

*       

*    @Inherited允许子类继承父类中的注解  

*     

*/  

@Target(ElementType.METHOD)   

@Retention(RetentionPolicy.RUNTIME)   

@Documented  

@Inherited  

/*  

*定义注解Test  

*注解中含有两个元素id和description  

*description元素有默认值"nodescription"  

*/  

public@interfaceTest{   

   publicintid();   

   publicStringdescription()default"nodescription";   

}  

packageTest_annotation;

importjava.lang.annotation.Documented;

importjava.lang.annotation.Inherited;

importjava.lang.annotation.Retention;

importjava.lang.annotation.Target;

importjava.lang.annotation.ElementType;

importjava.lang.annotation.RetentionPolicy;

/*

*元注解@Target,@Retention,@Documented,@Inherited

*

*    @Target表示该注解用于什么地方,可能的ElemenetType参数包括:

*        ElemenetType.CONSTRUCTOR构造器声明

*        ElemenetType.FIELD域声明(包括enum实例)

*        ElemenetType.LOCAL_VARIABLE局部变量声明

*        ElemenetType.METHOD方法声明

*        ElemenetType.PACKAGE包声明

*        ElemenetType.PARAMETER参数声明

*        ElemenetType.TYPE类,接口(包括注解类型)或enum声明

*        

*    @Retention表示在什么级别保存该注解信息。

可选的RetentionPolicy参数包括:

*        RetentionPolicy.SOURCE注解将被编译器丢弃

*        RetentionPolicy.CLASS注解在class文件中可用,但会被VM丢弃

*        RetentionPolicy.RUNTIMEVM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。

*        

*    @Documented将此注解包含在javadoc中

*    

*    @Inherited允许子类继承父类中的注解

*  

*/

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Inherited

/*

*定义注解Test

*注解中含有两个元素id和description

*description元素有默认值"nodescription"

*/

public@interfaceTest{

publicintid();

publicStringdescription()default"nodescription";

}

   

下面是一个使用注解和解析注解的实例

Java代码

packageTest_annotation;   

  

importjava.lang.reflect.Method;   

  

publicclassTest_1{   

   /*  

    *被注解的三个方法  

    */  

   @Test(id=1,description="hellomethod_1")   

   publicvoidmethod_1(){   

   }   

  

   @Test(id=2)   

   publicvoidmethod_2(){   

   }   

  

   @Test(id=3,description="lastmethod")   

   publicvoidmethod_3(){   

   }   

  

   /*  

    *解析注解,将Test_1类所有被注解方法的信息打印出来  

    */  

   publicstaticvoidmain(String[]args){   

       Method[]methods=Test_1.class.getDeclaredMethods();   

       for(Methodmethod:

methods){   

           /*  

            *判断方法中是否有指定注解类型的注解  

            */  

           booleanhasAnnotation=method.isAnnotationPresent(Test.class);   

           if(hasAnnotation){   

               /*  

                *根据注解类型返回方法的指定类型注解  

                */  

               Testannotation=method.getAnnotation(Test.class);   

               System.out.println("Test(method="+method.getName()   

                       +",id="+annotation.id()+",description="  

                       +annotation.description()+")");   

           }   

       }   

   }   

  

}  

packageTest_annotation;

importjava.lang.reflect.Method;

publicclassTest_1{

/*

*被注解的三个方法

*/

@Test(id=1,description="hellomethod_1")

publicvoidmethod_1(){

}

@Test(id=2)

publicvoidmethod_2(){

}

@Test(id=3,description="lastmethod")

publicvoidmethod_3(){

}

/*

*解析注解,将Test_1类所有被注解方法的信息打印出来

*/

publicstaticvoidmain(String[]args){

  Method[]methods=Test_1.class.getDeclaredMethods();

  for(Methodmethod:

methods){

   /*

   *判断方法中是否有指定注解类型的注解

   */

   booleanhasAnnotation=method.isAnnotationPresent(Test.class);

   if(hasAnnotation){

    /*

    *根据注解类型返回方法的指定类型注解

    */

    Testannotation=method.getAnnotation(Test.class);

    System.out.println("Test(method="+method.getName()

      +",id="+annotation.id()+",description="

      +annotation.description()+")");

   }

  }

}

}

   

输出结果如下:

   Test(method=method_1,id=1,description=hellomethod_1)

   Test(method=method_2,id=2,description=nodescription)

   Test(method=method_3,id=3,description=lastmethod)

Java之注解

文章分类:

Java编程

注解:

也指元数据,在代码中添加信息提供的一种形式化方法。

JavaSE5内置了三种标准注解:

@Override,@Deprecated,@SuppressWarnings.

四种元注解:

@Target,@Retention,@Documented,@Inherited.

@Target表示可用于什么地方,ElementType包含有:

类、接口(包括注释类型)或枚举声明:

ElementType.TYPE

字段声明(包括枚举常量)ElementTypeFIELD

方法声明ElementType.METHOD

参数声明ElementType.PARAMETER

构造方法声明ElementType.CONSTRUCTOR

局部变量声明ElementType.LOCAL_VARIABLE

注释类型声明ElementType.ANNOTATION_TYPE

包声明ElementType.PACKAGE

@Retention表示注释的生命周期,RetentionPolicy取值有:

SOURCE编译器要丢弃的注释

CLASS    编译器将把注释记录在类文件中,但在运行时VM不需要保留注释

RUNTIME编译器将把注释记录在类文件中,在运行时VM将保留注释,可以反射性地读取

一定义注解

Useraction注解类

Java代码

 

1.import java.lang.annotation.ElementType;  

2.import java.lang.annotation.Retention;  

3.import java.lang.annotation.RetentionPolicy;  

4.import java.lang.annotation.Target;  

5.  

6.@Retention(RetentionPolicy.RUNTIME)  

7.@Target({ElementType.METHOD,ElementType.TYPE})  

8.  

9.public @interface Useraction {  

10.      

11.    String userName() default "david";  

12.    Hobbys getHobbs() default Hobbys.程序;  

13.    String [] getUserAddress() default {"成都高升"};  

14.    String sex();  

15.    //如注释类只有一个属性:

userName,那么就要指明属性:

  

16.        //LovePer lovePer() default @LovePer(userName="Emma");  

17.        //注释类默认属性为:

value,可不加属性值,直接输入值就行了  

18.    LovePer lovePer() default @LovePer("Emma");  

19.    @SuppressWarnings("rawtypes")  

20.    Class commanyName();      

21.}  

importjava.lang.annotation.ElementType;

importjava.lang.annotation.Retention;

importjava.lang.annotation.RetentionPolicy;

importjava.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)

@Target({ElementType.METHOD,ElementType.TYPE})

public@interfaceUseraction{

StringuserName()default"david";

HobbysgetHobbs()defaultHobbys.程序;

String[]getUserAddress()default{"成都高升"};

Stringsex();

//如注释类只有一个属性:

userName,那么就要指明属性:

//LovePerlovePer()default@LovePer(userName="Emma");

//注释类默认属性为:

value,可不加属性值,直接输入值就行了

LovePerlovePer()default@LovePer("Emma");

@SuppressWarnings("rawtypes")

ClasscommanyName();

}

 

相关类:

Java代码

 

1.public enum Hobbys {      

2.    音乐,  

3.    电影,  

4.    小说,  

5.    程序,  

6.    游泳  

7.}  

8.  

9.public @interface LovePer {   

10.    //String userName();  

11.    String value();  

12.}  

13.  

14.public class Commanys {  

15.      

16.    public Commanys() {  

17.      

18.    }  

19.  

20.    private String name = "志向信息技术开发公司";  

21.  

22.    public String getName() {  

23.        return name;  

24.    }  

25.  

26.    public void setName(String name) {  

27.        this.name = name;  

28.    }     

29.  

30.}  

31.  

32.public class CommanysTwo {    

33.    private String name = "志大信息技术开发公司";  

34.    public String getName() {  

35.        return name;  

36.    }  

37.    public void setName(String name) {  

38.        this.name = name;  

39.    }  

40.    public CommanysTwo() {        

41.  

42.    }  

43.}  

publicenumHobbys{

音乐,

电影,

小说,

程序,

游泳

}

public@interfaceLovePer{

//StringuserName();

Stringvalue();

}

publicclassCommanys{

publicCommanys(){

}

privateStringname="志向信息技术开发公司";

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

}

publicclassCommanysTwo{

privateStringname="志大信息技术开发公司";

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicCommanysTwo(){

}

}

 

UseractionTest注解类的测试

Java代码

 

1.import java.lang.reflect.InvocationTargetException;  

2.import java.lang.reflect.Method;  

3.  

4.@Useraction(commanyName=Commanys.class,userName="陈国强",getHobbs=Hobbys.电影,getUserAddress="重庆大平",sex="男",lovePer=@LovePer("李中"))  

5.public class UseractionTest {     

6.      

7.    @SuppressWarnings("rawtypes")  

8.    public static void main(String[] args) throws Exception{      

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2