Java如何指定一个采用父类(super class)的子类的方法

标签 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 并在父类(super class)中设置某些属性后返回它。返回只是为了方便。我只是缺少一些语法吗?或者我对类和通配符的理解不正确?

现在我得到: MySuperClass 类型中的方法 setProperties(Class) 不适用于参数 (MyClass)

最佳答案

I want to be able to pass any subclass of MySuperClass to setPropterties and return it after setting some properties in the superclass. Returning it is just for convinence. Am I just missing some syntax ? or is my understanding of Class

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

关于Java如何指定一个采用父类(super class)的子类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17884142/

相关文章:

bash - 遍历数组,防止通配符扩展 (*)

java - 将带有查询的链接作为 get 请求的参数

java - GridLayout 的一个单元格中有多个 Java GUI 组件?

javascript - 相当于使用 __proto__?

python - 关于继承Python的方法重写

java - 不明确的方法调用 println char 数组和 String(而不是 Object)

wildcard - 获取通配符 arm 的值

java - MVC : How do I reduce the amount of polymorphic methods?

java - 方法调用 'extras' 可能会产生 NullPointerException

java - 与 Akka Actor 特性混合与基类发生冲突