我在The Java™Tutorials Type Inference
中找到了以下代码片段static <T> T pick(T a1, T a2) { return a2; }
Serializable s = pick("d", new ArrayList<String>());
因此a1
和a2
可以是不同的类型,如何强制它们为同一类型?说只能调用pick("d", "e");
。
答案 0 :(得分:3)
how can I force them to be the same type?
如果T是非常特定的类型,只有String
,那么就可以避免泛型。但你可以限制范围,比如 -
static <T extends Number> T pick(T a1, T a2) { return a2; }
pick(0, 1)
,因为T仅限于数字和子类。我没有画出<T extends String>
的示例,因为String
类是final
。