在定义泛型方法时,我们可以使用T.在下面的方法中,它将允许我们传递两个具有相同类型的列表.
public static <T> void methodList(List<T> t1, List<T> t2) {
}
因此,在main()中,我们可以传递两个字符串列表,但不能传递一个字符串列表和一个整数列表.
public static void main(String[] args) {
List<String> stringList = new ArrayList<>();
List<String> stringList2 = new ArrayList<>();
List<Integer> integerList = new ArrayList<>();
methodList(stringList, stringList2); // correct
methodList(stringList, integerList); // can't, reason: Incompatible equality constraint: Integer and String
}
这是我的问题.如果我们定义如下泛型方法,它将允许我们传递不同的类型.
public static <T> void method(T t1, T t2) {
}
public static void main(String[] args) {
String s = "a";
Integer num = 1;
method(s, num); // correct
}
为什么在这种情况下没有第一个示例中的类型限制? 我们可以自己做吗,只允许将相同的类型传递给第二个方法?