我们在这里有两种不同的方法,每种类型参数。
public abstract void getAndParse(Args... args);
这是一个名为T的类型参数的方法,由AnotherClass限定,意味着可以将AnotherClass的每个子类型作为类型参数。
public void getAndParse(Args... args)
这是一个名为SpecificClass的类型参数的方法,由Object限定(表示允许每个类型作为类型参数)。你真的想要这个吗?
Args中使用的类型参数是?我认为问题会在那里。
编辑:
的意思
public abstract void getAndParse(T... args);
是该方法的调用者可以决定使用哪个类型参数来调用该方法,只要这是AnotherClass的一些子类型即可。这意味着实际上可以使用类型AnotherClass的任何对象调用该方法。
由于调用者可以决定类型参数,因此您不能在子类中将参数类型缩小到SpecificClass – 这不是方法的实现,而是具有相同名称(重载)的另一种方法。
也许你想要这样的东西:
public abstract class GetAndParse {
public SomeClass var;
public abstract void getAndParse(T... args);
}
public class Implementor extends GetAndParse {
// some field declarations
// some method declarations
@Override
public void getAndParse(SpecificClass... args) {
// method body making use of args
}
}
现在getAndParse方法实现了父类的方法。