码迷,mamicode.com
首页 > 编程语言 > 详细

Java【第十五章】Annotation注释

时间:2019-10-18 09:33:37      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:依据   操作   pac   执行   不可   代码   父类   意义   实现   

【第十五章】Annotation注释

一.Annotation注释:

  Annotation可以有效的减少程序配置的代码,并且可以利用Annation进行一些结构化的定义。

  Annotatin是以一种注解的形式实现的程序开发,可以节约大量的程序代码,只不过开发难度较高。

  如果想清楚Annotation的产生意义,则必须了解程序开发结构的历史,从历史上来讲,程序开发分为三个过程。

(1)过程一:

  在程序定义的时候将所有可能使用的服务器资源定义在程序代码之中。

    1.如果此时服务器相关地址发生改变,那么对于程序而言,就要进行程序源代码的修改,需要程序的开发人员来完成,这样程序明显是不方便的。

(2)过程二:(我们现在正在经历的过程)

  引入配置资源,在配置文件中定义所有要使用的服务器资源。程序先读取配置文件,如果程序发生了变化,则只需要改动配置资源即可(在配置项不多的情况下,此类配置非常好用,并且十分简单),但是如果所有的项目都是采用这种形式开发,那么就可能出现配置文件暴多。

  所有的操作的都要通过配置文件来完成,这样对于开发的难度提升了;

(3)过程三:

  将配置信息重新写回到程序里面,利用一些特殊的标记与程序代码进行分离,所以这就是注解的作用。也是Annotation提出的基本依据,但是如果全部使用Annotation开发,则开发难度过高,所以现在开发基本是围绕Annotation加配置文件的方式来进行程序开发。

 二.准确覆写:@Override

  当我们子类继承一个父类的时候,当父类的方法不够完善时,我们用覆写对父类的方法进行扩充。于是来观察一下覆写操作。

eg:观察覆写

package override1;
class Channel{
	public void connect(){
	System.out.println("*********");
	}
}	
class DatebaseChannel extends Channel{
	public void connect(){	
	System.out.println("子类提供的通道连接方法");
	}
}
public class Override {
	public static void main(String [] args){
		new DatebaseChannel().connect();
	}
}

  1.开发中经常遇到的俩个问题

  (1)子类继承一个父类进行方法的覆写,但是有可能由于疏忽忘记写extends,这个时候不是覆写。

  (2)在进行方法覆写的时候,单词写错了(方法名),此时程序认为这是一个新的方法。

  所以在开发中,为了避免这种问题的出现,可以在明确覆写的方法上追加一个注解。

eg:追加注解

  

package override1;
class Channel{
	public void connect(){
	System.out.println("*********");
	}
}	
class DatebaseChannel extends Channel{
        @Override                        //主要是帮助开发者在程序编译的时候可以检查出程序的错误。
	public void connect(){	
	System.out.println("子类提供的通道连接方法");
	}
}
public class Override {
	public static void main(String [] args){
		new DatebaseChannel().connect();
	}
}    

三.过期操作@Deprecated

  所谓的过期操作指的是在一个软件项目的迭代开发过程之中,可能有某一个方法或者某一个类,在开发时考虑不周(存在有缺陷),导致新版本的应用会有不适应的地方,这个时候又不可能直接删除代码,需要给一个过渡的时间,于是就可以采用过期的声明,目的是告诉新的用户,这些操作不要再用了(老版本不受影响),须用@Deprecated注解进行定义。

eg:声明过期操作 

class Channel{
     @Deprecated          //注解表示老版本继续使用,新版本不要使用 public void connect(){ System.out.println("*********"); } public String connection(){ return ("获取通道连接信息成功"); } } public class Override { public static void main(String [] args){ new Channel().connection(); } }

  此程序由于加了过去声明,在编译时会出错,但是执行时不会出错。

  此方法可以柔和的进行代码过渡。

四.压制警告@SuppressWarings

  以之前的过期程序为例,在程序编译时会出现错误信息;比如在使用过期声明时,编译时会告诉你:使用了过期的API。

  如果此时不愿意见到这些提示信息(或者已经明确知道了错误在哪里),那么就可以进行警告信息压制。

eg:观察压制警告

 

class Channel{
      @Deprecated          //注解表示老版本继续使用,新版本不要使用
	public void connect(){
	System.out.println("*********");
	}
	public String connection(){
		return ("获取通道连接信息成功");
	}
}	

public class Override {
	public static void main(String [] args){
                @SuppressWarnings({"deprecation"})    //压制deprecation的错误类型  
		new Channel().connection();
	}
}

  此时程序在编译时就不会出现deprecation,只是让警告信息不出现。

 

Java【第十五章】Annotation注释

标签:依据   操作   pac   执行   不可   代码   父类   意义   实现   

原文地址:https://www.cnblogs.com/xiwenxinaini/p/11696310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!