我有一个这样的主要类:
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);
不起作用。
答案 0 :(得分:3)
您的代码有多处错误:
()
。此外,您应该尝试声明泛型类型(如`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`是完全多余的,但我把它留在了你想要它。
答案 1 :(得分:2)
你应该这样做:
public class MainClass<T> {
public void myMethod(T myParameter) {
// Do stuff
}
}
public class ChildClass extends MainClass<String> {
}