这是我想做的:

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

09-09 23:26