这是我想做的:
public MyClass extends MySuperClass{
}
public class MySuperClass {
public static void main( String[] args ) {
MyClass mc = setProperties( new Myclass() );
}
public static Class<? extends MySuperClass> setProperties(Class<? extends MySuperClass> myClass){
// set some static properties
return myClass;
}
}
我希望能够将MySuperClass的任何子类传递给setPropterties,并在超类中设置一些属性后将其返回。退货只是为了方便。我只是缺少一些语法吗?还是我对类和通配符的理解不正确?
现在,我得到:类型为MySuperClass的方法setProperties(Class)不适用于参数(MyClass)
最佳答案
我希望能够将MySuperClass的任何子类传递给setPropterties,并在超类中设置一些属性后将其返回。退货只是为了方便。我只是缺少一些语法吗?还是我对班级的理解
public static MySuperClass setProperties(MySuperClass superClass)
{
// Accept any instance or subclass of MySuperClass
return superClass;
}
Class<?>
的使用这代表未知类型。 (幽灵般的)。基本上,这意味着您不知道此方法将返回哪种类类型。
有用的链接:http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html