泛型方法和方法之间有什么优势才接受Object?它如何确保类型安全?
例如:以下面的代码片段中提到的任何一种形式定义我的界面时会有什么不同?
public interface MyInterface {
public <MT> String myMethod(MT t);
}
Run Code Online (Sandbox Code Playgroud)
要么
public interface MyInterface {
public String myMethod(Object t);
}
Run Code Online (Sandbox Code Playgroud)
在我看来,只有当我们在它周围键入绑定时,通用方法才有用.例如,类型参数应该是Serializable类的.否则它没有意义..寻找更多的洞察力
public interface MyInterface {
public <MT extends Serializable> String myMethod(MT t);
}
Run Code Online (Sandbox Code Playgroud)
JB *_*zet 16
方法通常是通用的,以确保两个参数彼此兼容,或返回类型取决于方法的泛型类型的值.
例如,
public static <T> void sort(List<T> list, Comparator<? super T> c)
Run Code Online (Sandbox Code Playgroud)
确保列表的类型和比较器的类型是兼容的,如果签名是,则不必相同
public static void sort(List list, Comparator c)
Run Code Online (Sandbox Code Playgroud)
在以下示例中,返回值的类型取决于方法的泛型类型:
public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
Run Code Online (Sandbox Code Playgroud)
允许做:
List<Integer> intList = ...;
Integer min = Collections.min(intList);
Run Code Online (Sandbox Code Playgroud)
如果方法是
public static Comparable T min(Collection coll)
Run Code Online (Sandbox Code Playgroud)
你必须这样做
Integer min = (Integer) Collections.min(intList);
Run Code Online (Sandbox Code Playgroud)
如果您将代码更改为,则编译器不会收到任何警告
Long min = (Long) Collections.min(intList);
Run Code Online (Sandbox Code Playgroud)