0

我有一个这样的主要课程:

public class MainClass() {
  public Class<? extends Object> myType;
  // This does not work, but thats what I want:
  public MainClass(Class<? extends Object> type) {
    myType = type;
  }
  public void myMethod(Object<myType> myParameter) {
    // Do stuff
  }
}

还有一些扩展这个类的类,例如:

public class ChildClass() extends MainClass {
  public ChildClass() {
    super((Class<? extends Object>) String.class);
    // this should be changeable to what ever class then String.class
  }
}

如何创建具有可变类类型的父方法?代码myMethod(Object<myType> obj);不起作用。

4

2 回答 2

3

您的代码有多个错误:

  1. ()类声明后有括号。
  2. 您正在尝试将泛型参数提供给没有泛型参数的 Object。

此外,您应该尝试声明一个泛型类型(如`T`)而不是使用`?`。尝试这个:

public class MainClass<T extends Object> {
      public Class<T> myType;

      public MainClass(Class<T> type) {
        myType = type;
      }
      public void myMethod(T myParameter) {
        // Do stuff
      }
}

class ChildClass extends MainClass<String> {
      public ChildClass() {
        super(String.class);
        // this should be changeable to what ever class then String.class
      }
}

另外,请注意,`T extends Object` 完全是多余的,但我把它留了下来,因为你想要它。

于 2013-09-11T14:44:47.380 回答
2

你应该这样做:

public class MainClass<T> {
  public void myMethod(T myParameter) {
    // Do stuff
  }
}

public class ChildClass extends MainClass<String> {

}
于 2013-09-11T14:38:55.577 回答