jdk5新特性

自动装箱与拆箱

// 自动装箱:值转对象
Integer n = 1;
// 自动拆箱:对象转值
int m = n;

自动拆箱时小心NPE。


静态导入

import static java.util.Collections.addAll;

可变参数

public void method(Object... args) {}

写工具方法时更加容易,如:

public static boolean  java.util.Collections.addAll(Collection c, T... elements) 

Introspector

文档参考

BeanInfo info = Introspector.getBeanInfo(Xyz.class);    // BeanInfo包含:BeanDescriptor, PropertyDescriptor, MethodDescriptor等

我用的不多,有印象的只有PropertyDescriptor中的getReadMethod和getWriteMethod,绝大多数时是直接用反射。可以看看spring中的使用

范型

public class ArrayList extends AbstractList

基本功,在框架和工具方法中经常使用。

List
List
List

for-each

List list = new ArrayList();
for (T ele : list) {
    ...
}

注解

Annotation 提供了强大的元数据能力,在编译时、文档、运行时提供了强大的支持,如今在各种框架中都有其深度的使用。

协变返回类型

@Override子类覆盖方法时返回的类型可以是父类返回类型的子类型

abstract class Parent {
    abstract Object getValue();
}
class Child extends Parent {
    @Override
    public ArrayList getValue() {
        return null;
    }
}

枚举

enum Type {
    TYPE1, TYPE2
}

最佳实践:在分布式系统中不使用枚举。一不用枚举一样能实现业务目标、二分布式系统中枚举容易成坑。

你可能感兴趣的:(jdk5新特性)