Java【第十五章】Annotation注释

【第十五章】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,只是让警告信息不出现。

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

时间: 2024-08-25 13:43:05

Java【第十五章】Annotation注释的相关文章

java(第十五章)

第十五章 一.字符串类String 1.String是一个类,位于java.lang包中 2.创建一个字符串对象的2种方式: String 变量名="值"; String 对象名=new String("值"); 3.字符串的常用方法 3.1 字符串长度--length() 3.2 判断值是否相等 equals() 3.3 判断字符串对象地址是否相同 == 3.4 忽略 大小写 判断 equalsIgnoreCase() 3.5 大小写转换 toLowerCase(

初始JAVA第十五章String的总结

1 字符串的概述 2 1.什么是字符串:零个或多个字符组成的有限序列 3 2.如何使用字符串:(使用字符串分为两步) 4 1)定义并初始化字符串 5 2)使用字符,对字符串进行一些处理 6 // 穿件一个字符串 7 // 语法 8 String arhs = "abc"; 9 // 创建一个空的字符串 10 String string = new String(); 11 // 创建一个字符串对象Demo 12 String string = new String("Demo

《Java并发编程实战》第十五章 原子变量与非阻塞同步机制 读书笔记

一.锁的劣势 锁定后如果未释放,再次请求锁时会造成阻塞,多线程调度通常遇到阻塞会进行上下文切换,造成更多的开销. 在挂起与恢复线程等过程中存在着很大的开销,并且通常存在着较长时间的中断. 锁可能导致优先级反转,即使较高优先级的线程可以抢先执行,但仍然需要等待锁被释放,从而导致它的优先级会降至低优先级线程的级别. 二.硬件对并发的支持 处理器填写了一些特殊指令,例如:比较并交换.关联加载/条件存储. 1 比较并交换 CAS的含义是:"我认为V的值应该为A,如果是,那么将V的值更新为B,否则不需要修

java:第十五章

第十五章 字符串 1.字符串(String)的定义 String str="内容"; String str=new String(); //内容为null String str=new String("内容"); 2.java.lang.* 字符串所在的包是java.lang. 注意:所有在java.lang包下的类,我们使用时,不需要import. 3.常用方法 str.length();//字符串的长度 str.indexOf(str1);//子串str1出现的

Java(第十五章)

第十五章 一.字符串类String 1.String是一个类,位于java.lang包中 2.创建一个字符串对象的2种方式: String 变量名="值"; String 对象名=new String("值"); 3.字符串的常用方法 3.1 字符串长度--length() 3.2 判断值是否相等 equals() 3.3 判断字符串对象地址是否相同 == 3.4 忽略 大小写 判断 equalsIgnoreCase() 3.5 大小写转换 toLowerCase(

“全栈2019”Java第五十五章:方法的静态绑定与动态绑定

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第五十五章:方法的静态绑定与动态绑定 下一章 "全栈2019"Java第五十六章:多态与字段详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组&q

“全栈2019”Java第七十五章:内部类持有外部类对象

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第七十五章:内部类持有外部类对象 下一章 "全栈2019"Java第七十六章:静态.非静态内部类访问权限 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习

“全栈2019”Java第八十五章:实现接口中的嵌套接口

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第八十五章:实现接口中的嵌套接口 下一章 "全栈2019"Java第八十六章:嵌套接口可以多继承吗? 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组

“全栈2019”Java多线程第二十五章:生产者与消费者线程详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第二十五章:生产者与消费者线程详解 下一章 "全栈2019"Java多线程第二十六章:同步方法生产者与消费者线程 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"