我有一个类A,带有抽象方法doAction(BaseClass obj),期望一个类型为BaseClass的参数
public class A {
//....
abstract void doAction(BaseClass obj);
//....
}
Run Code Online (Sandbox Code Playgroud)
现在,我有另一个需要扩展A的B类.但是,B的doAction方法需要使用扩展BaseClass的对象DerivedClass.
public class B extends class A {
//..
void doAction(DerivedClass obj) {
obj.callMethodAvailableOnlyInDerivedClass();
}
}
Run Code Online (Sandbox Code Playgroud)
我如何处理这种情况,我需要将类型为DerivedClass的param传递给在期望BaseClass时被覆盖的方法?
谢谢!
这是我的情景.我有一个通用类:
public class Tuple<T> extends ArrayList<T> {
//...
public Tuple(T ...members) {
this(Arrays.asList(members));
}
@XmlElementWrapper(name = "tuple")
@XmlElement(name = "value")
public List<T> getList() {
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
和一个儿童班:
public class StringTuple extends Tuple<String> {
public StringTuple(String ...members) {
super(members);
}
//explanation of why overriding this method soon ...
@XmlElementWrapper(name = "tuple")
@XmlElement(name = "value")
@Override
public List<String> getList() {
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
这里引用了这些类:
@XmlRootElement(namespace = "iv4e.xml.jaxb.model")
public class Relation {
private Tuple<StringTuple> relationVars;
//...
@XmlElementWrapper(name = "allRelationVars")
@XmlElement(name …Run Code Online (Sandbox Code Playgroud)