课时71:Annotation简介
Annotation是从JDK1.5之后提出的一个新的开发技术结构,利用Annotation可以有效的减少程序配置的代码,并且可以利用Annotation进行一些结构化的定义。Annotation是以一种注解的形式实现程序的开发。
要清楚Annotation的产生意义,必须了解一下程序开发结构的历史,从历史上来讲,程序的开发一共分为了三个过程:
过程一:在程序定义的时候将可能使用到的资源全部定义在程序代码之中
public static final String IP = "192.1.1.1";
- 如果此时服务器相关地址发生改变,那么对于程序而言需要修改源代码,维护需要由开发人员来完成,这样的做法明显是不方便的;
过程二:引入配置文件,在配置文件之中定义全部的要使用的服务器资源
引入配置文件,在配置文件之中定义全部要使用的额服务器资源
- 在配置项不多的情况下,此类配置非常好用,并且十分简单,如果所有的项目都采用这个结构开发,那么可能出现一种情况:配置文件暴多;
- 所有的操作都需要通过配置文件完成,增大了开发难度。
过程三:将配置信息重新写回到程序里面,利用一些特殊的标记与代码进行分离,这就是注解的作用,也就是Annotation提出的基本依据。
- 如果全部使用注解开发,难度太高了,配置文件有好处也有缺点,所以现在的开发基本是围绕配置文件加注解完成的。
本次所讲解的注解实际上只是Java中提供的几个基本注解:@Override、@Deprecated、@SuppressWarnings。
课时72:准确覆写
准确覆写:@Override
当子类继承某一个父类之后如果发现父类中的某些方法功能不足的时候,往往会采用覆写的形式来对方法功能进行扩充,于是下面先观察一种腹泻操作。
范例:观察覆写的问题
package test;
class Channel {
public void connect() {
System.out.println("****** Channel ******");
}
}
class DatabaseChannel extends Channel {
public void connect() {
System.out.println("子类定义的通道连接操作。");
}
}
public class example {
public static void main(String[] args) {
new DatabaseChannel().connect();
}
}
1、如果上述代码不写extends Channel 也不会出错,能正常编译,相当于新建了一个类。
2、如果继承的子类中connect写成connection。即便单词写错, 程序在编译的时候也不会出错,因为程序会认为这是一个新的方法。
开发之中经常出现的两个问题:
- 虽然要明确的继承一个父类并且进行方法的覆写,但是由于疏忽忘记写extends,于是这个时候不是覆写。
- 在进行方法覆写的时候单词写错。
所以在开发之中,为了避免这种情况的出现,可以在明确覆写的方法上追加一个注解。
package test;
class Channel {
public void connect() {
System.out.println("****** Channel ******");
}
}
class DatabaseChannel extends Channel {
@Override //明确表示该方法是一个覆写来的方法
public void connect() {
System.out.println("子类定义的通道连接操作。");
}
}
public class example {
public static void main(String[] args) {
new DatabaseChannel().connect();
}
}
该注解主要是在帮助开发者在程序编译的时候可以检查出程序的错误。
课时73:过期声明
过期操作:@Deprecated
所谓的过期操作指的是在一个软件项目的迭代开发过程中之中,可能有一个方法或者是某个类,由于在最初设计的时候考虑不周(存有缺陷),导致新版本的应用会有不适应的地方(老版本不影响),这时候又不可能直接删除掉这些操作,那么久希望给一个过渡的时间,于是就可以采用过期的声明,目的告诉新的用户这些操作不要再用了,老的用户你用就用了。这样的方法就必须利用“@Deprecated”注解进行定义。
范例:声明过期操作
package test;
@Deprecated
//已弃用。老系统继续用,如果是新的不要用了
class Channel {
public void connect() {
System.out.println("****** Channel ******");
}
public String connection() {
return "获取了XXX通道连接信息。";
}
}
public class example {
public static void main(String[] args) {
new Channel().connect();
System.out.println(new Channel().connection());
}
}
课时74:压制警告
压制警告:suppressWarings
已知的错误信息,不愿再看到,就可以使用压制警告。
public class JavaDemo{
@SuppressWarnings({"deprecation"})
public ststic void main(String args[]){
new Channel().connect;
}
}