这是我想要做的:
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)
答案 0 :(得分:3)
我希望能够将MySuperClass的任何子类传递给setPropterties,并在超类中设置一些属性后返回它。返回它只是为了节制。我只是缺少一些语法?或者是我对班级的理解
public static MySuperClass setProperties(MySuperClass superClass)
{
// Accept any instance or subclass of MySuperClass
return superClass;
}
使用Class<?>
这代表 unknown 类型。 (幽灵般的)。它基本上意味着你不知道这个方法将返回什么类类型。
有用的链接:http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html