Java 泛型 - 这两个方法声明是否等效?
给定某个类,这两个方法声明是等价的吗?SomeBaseClass
public <T extends SomeBaseClass> void myMethod(Class<T> clz)
和
public void myMethod(Class<? extends SomeBaseClass> clz)
给定某个类,这两个方法声明是等价的吗?SomeBaseClass
public <T extends SomeBaseClass> void myMethod(Class<T> clz)
和
public void myMethod(Class<? extends SomeBaseClass> clz)
对于呼叫者:是的,它们是等效的。
对于方法内部的代码:否。
不同之处在于,在第一个示例的代码中,您可以使用类型 T(例如,保存 由 创建的对象),而在第二个示例中,则不能。clz.newInstance()
不,他们不是。对于第一个定义,您可以在方法定义中使用类型 T,例如,创建或返回 T。对于第二个定义,这是不可能的。ArrayList<T>