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