protected abstract T createEmptyPeer();
public List
List
// database magic
return peers;
}
}
通过实现DBFactory
public class CustomerFactory extends DBFactory
public Customer createEmptyPeer() {
return new Customer();
}
}
泛型方法
不管想要对参数之间还是参数与返回类型之间的泛型类型施加约束,都可以使用泛型方法:
例如,如果编写的反转函数是在位置上反转,那么可能不需要泛型方法。然而,如果希望反转返回一个新的List,那么可能会希望新List的元素类型与传入的List的类型相同。在这种情况下,就需要一个泛型方法:
具体化
当实现一个泛型类时,您可能想要构造一个数组T[]。因为泛型是通过擦除(erasure)实现的,所以这是不允许的。
您可以尝试把Object[]强制转换为T[]。但这是不安全的。
具体化解决方案
按照泛型教程的惯例,解决方案使用的是“类型令牌”,通过向构造函数添加一个Class
public class ArrayExample
private Class
public ArrayExample(Class
this.clazz = clazz;
}
public T[] getArray(int size) {
return (T[])Array.newInstance(clazz, size);
}
}
为了构造ArrayExample
拥有类对象使构造一个具有正确元素类型的数组成为可能。
来源自:http://hi.baidu.com/edg_edu/blog/item/70c23b83caa4e1b46d811941.html
jdk1.7的新特性:
1,switch中可以使用字串了
String s = "test";
switch (s) {
case "test" :
System.out.println("test");
case "test1" :
System.out.println("test1");
break ;
default :
System.out.println("break");
break ;
}
作者“J2EE技术探讨”