Java学习笔记 Annotation

Annotation

1、本次预计讲解的知识点

1、Annotation的作用
         2、三种内置的Annotation的使用。

2、具体内容

对于软件程序开发实际上经过了三个发展过程:

         ·第一个过程:将所有与配置相关的内容直接写到代码之中。

         ·第二个过程:将配置与程序代码独立,即:程序运行时候根据配置文件进行操作。  |---最严重问题:一个项目里配置文件过多,根本就无法查询错误。

         ·第三个过程:配置信息对用户而言无用,而且胡乱的修改还会导致程序错误,所以可将配置信息写回到程序里面,但是利用一些明显的标记来区分配置信息与程序。

Annotation是JDK1.5最大的特色,利用注解的形式来实现程序的不同功能实现。

在java SE里面支持自定义Annotation的开发,并且提供三个最为常用的基础Annotation:@Override、@Deprecated、@SuppressWarnings。

2.1、准确的覆写:@OVerride

如果在输出对象的时候希望其可以返回需要的内容,那么要进行覆写toString()方法。

范例:有没有可能在开发中出现以下形式。

class Book{

         public String tostring(){//原本打算覆写toStiring()

                   return "this is a book";

         }

}

这时明显没有成功进行toString()方法的覆写,这个错误无法在编译时候发现,只能够在程序运行的时候发现。

所以此时为了告诉编译器,toStirng()应该是覆写方法,则可加上”@Override”,明确的告诉编译器,这个方法应该是覆写来的,如果不是要报错。

class Book{

         @Override//只要正确覆写了,就不会出现编译的语法错误。

         public String tostring(){

                   return "this is a book";

         }

}

E:\java>javac -d . TestDemo.java

TestDemo.java:3: 错误: 方法不会覆盖或实现超类型的方法

        @Override//只要正确覆写了,就不会出现编译的语法错误。

        ^

1 个错误

以后编写代码里面如果使用了Eclipse,会自动生成这样的注解。

2.2、声明过期的操作:@Deprecated

如果说现在由一个专门负责完成某些功能的工具包,里面由一个Hello类,在Hello类里面有一个fun()方法,在所有项目最初的发展阶段,fun()方法非常完善,但是后来随着开发技术的不断加强,发现这个fun()方法功能不足,于是这个时候对于开发者有两个选择。

·选择一:直接在新版本的工具包里面取消掉fun()方法,同时直接给出新的fun2()方法。

·选择二:在新版本的开发包里面保存fun()方法,但是通过某种途径告诉新的开发者,此方法有问题,并且提供fun2()方法供开发者使用。

很明显第二种方法较适用,因为第二种可以兼顾已使用项目的情况。这时可用”@Deprecated”来声明

范例:声明过期操作。

package cn.mldn.demo;

class Book{

         @Override//只要正确覆写了,就不会出现编译的语法错误。

         public String toString(){

                   return "this is a book";

         }

         @Deprecated

         public void fun(){

                   System.out.println("过期操作方法");

         }

        

}

public class TestDemo{

         public static void main(String[] args){     

                   Book book = new Book();

                   book.fun();

         }       

}

 

 

E:\java>javac -d . TestDemo.java

注: TestDemo.java使用或覆盖了已过时的 API。

注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

E:\java>java cn.mldn.demo.TestDemo

过期操作方法

 

 

利用此操作可以很好实现方法功能的新旧交替。

2.3、压制警告:@SuppressWarnings

可以压制多个警告

范例:观察警告

package cn.mldn.demo;

class Book<T>{

         private T title;

         @Override//只要正确覆写了,就不会出现编译的语法错误。

         public String toString(){

                   return "hello world";

         }

         @Deprecated

         public void fun(){

                   System.out.println(this.title);

         }

         public void setTitle(T title){

                   this.title = title;

         }

        

}

public class TestDemo{

         public static void main(String[] args){     

                   Book book = new Book();

                   book.setTitle("Hello");

                   book.fun();

         }       

}

 

E:\java>javac -d . TestDemo.java

注: TestDemo.java使用或覆盖了已过时的 API。

注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

注: TestDemo.java使用了未经检查或不安全的操作。

注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

 

E:\java>java cn.mldn.demo.TestDemo

Hello

那么如果说现在开发者故意留下的警告信息,但是又不希望其总是提示警告,就可以选择压制警告。

范例:压制警告

package cn.mldn.demo;

class Book<T>{

         private T title;

         @Override//只要正确覆写了,就不会出现编译的语法错误。

         public String toString(){

                   return "hello world";

         }

         @Deprecated

         public void fun(){

                   System.out.println(this.title);

         }

         public void setTitle(T title){

                   this.title = title;

         }

        

}

public class TestDemo{

         @SuppressWarnings({"rawtypes","unchecked"})

         public static void main(String[] args){     

                   Book book = new Book();

                   book.setTitle("Hello");

                   book.fun();

         }       

}

 

E:\java>javac -d . TestDemo.java

注: TestDemo.java使用或覆盖了已过时的 API。

注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

E:\java>java cn.mldn.demo.TestDemo

Hello

相当于取消了警告提示信息。

3、总结

1、可以发现如果使用开发工具,所有Annotation实际上都不需要我们去编写。

2、清楚三个java的Annotation作用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值