泛型例子:
1.数组
List<Integer> li = new ArrayList<Integer>();
li.put(new Integer(3));
Integer i = li.get(0);
2.图
Map<String, String> m = new HashMap<String, String>();
m.put("key", "blarg");
String s = m.get("key");
3.
谨记:
泛型不是协变的,例如下面的代码不是正确的
List<Integer> intList = new ArrayList<Integer>();
List<Number> numberList = intList; // invalid
使用泛型原因:
之所以声明泛型方法,一般是因为您想要在该方法的多个参数之间宣称一个类型约束。例如,下面代码中的ifThenElse()方法,根据它的第一个参数的布尔值,它将返回第二个或第三个参数:
public <T> T ifThenElse(boolean b, T first, T second) {
return b ? first : second;
}
注意,您可以调用ifThenElse(),而不用显式地告诉编译器,您想要T的什么值。编译器不必显式地被告知 T 将具有什么值;它只知道这些值都必须相同。编译器允许您调用下面的代码,因为编译器可以使用类型推理来推断出,替代T的String满足所有的类型约束:
String s = ifThenElse(b, "a", "b");
类似地,您可以调用:
Integer i = ifThenElse(b, new Integer(1), new Integer(2));
但是,编译器不允许下面的代码,因为没有类型会满足所需的类型约束:
String s = ifThenElse(b, "pi", new Float(3.14));
使用类型通配符:
void printList(List<?> l) {
for (Object o : l)
System.out.println(o);
}
已有 0 人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐