打字猴:1.700446885e+09
1700446885
1700446886 public void doSomething(){
1700446887
1700446888 }
1700446889
1700446890 }
1700446891
1700446892 这是一个简单的@Override示例,接口中定义了一个doSomething方法,实现类Impl实现此方法,并且在方法前加上了@Override注解。这段代码在Java 1.6版本上编译没有任何问题,虽然doSomething方法只是实现了接口定义,严格来说并不能算是覆写,但@Override出现在这里可以减少代码中可能出现的错误。
1700446893
1700446894 可如果在Java 1.5版本上编译此段代码,就会出现如下错误:
1700446895
1700446896 The method doSomething()of type Impl must override a superclass method Client.java
1700446897
1700446898 注意,这是个错误,不能继续编译。原因是1.5版中@Override是严格遵守覆写的定义:子类方法与父类方法必须具有相同的方法名、输入参数、输出参数(允许子类缩小)、访问权限(允许子类扩大),父类必须是一个类,不能是一个接口,否则不能算是覆写。而这在Java 1.6就开放了很多,实现接口的方法也可以加上@Override注解了,可以避免粗心大意导致方法名称与接口不一致的情况发生。
1700446899
1700446900 在多环境部署应用时,需要考虑@Override在不同版本下代表的意义,如果是Java 1.6版本的程序移植到1.5版本环境中,就需要删除实现接口方法上的@Override注解。
1700446901
1700446902
1700446903
1700446904
1700446905 编写高质量代码:改善Java程序的151个建议 [:1700438165]
1700446906 编写高质量代码:改善Java程序的151个建议 第7章 泛型和反射
1700446907
1700446908 Don’t let complexity stop you.Be activists.Take on the big inequities.It will be one of the great experiences of your lives.
1700446909
1700446910 不要让这个世界的复杂性阻碍你的前进。要成为一个行动主义者,将解决人类的不平等视为己任。它将成为你生命中最重要的经历之一。
1700446911
1700446912 ——比尔·盖茨在哈佛大学的演讲
1700446913
1700446914 泛型可以减少强制类型的转换,可以规范集合的元素类型,还可以提高代码的安全性和可读性,正是因为有这些优点,自从Java引入泛型后,项目的编码规则上便多了一条:优先使用泛型。
1700446915
1700446916 反射可以“看透”程序的运行情况,可以让我们在运行期知晓一个类或实例的运行状况,可以动态地加载和调用,虽然有一定的性能忧患,但它带给我们的便利远远大于其性能缺陷。
1700446917
1700446918
1700446919
1700446920
1700446921 编写高质量代码:改善Java程序的151个建议 [:1700438166]
1700446922 编写高质量代码:改善Java程序的151个建议 建议93:Java的泛型是类型擦除的
1700446923
1700446924 Java泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,它与C++中的模板(Templates)比较类似,但是有一点不同的是:Java的泛型在编译期有效,在运行期被删除,也就是说所有的泛型参数类型在编译后都会被清除掉,我们来看一个例子,代码如下:
1700446925
1700446926 public class Foo{
1700446927
1700446928 //arrayMethod接收数组参数,并进行重载
1700446929
1700446930 public void arrayMethod(String[]strArray){
1700446931
1700446932 }
1700446933
1700446934 public void arrayMethod(Integer[]intArray){
[ 上一页 ]  [ :1.700446885e+09 ]  [ 下一页 ]