Java如何指定一个接受超类子类的方法

时间:2013-07-26 14:33:00

标签: java inheritance wildcard

这是我想要做的:

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)

1 个答案:

答案 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