我有一个抽象类,它有一个泛型的方法,我想通过将泛型参数替换为特定类型来覆盖泛型方法。所以在伪代码我有以下几点:Java的泛型方法的继承和覆盖规则
public abstract class GetAndParse {
public SomeClass var;
public abstract <T extends AnotherClass> void getAndParse(T... args);
}
public class Implementor extends GetAndParse {
// some field declarations
// some method declarations
@Override
public <SpecificClass> void getAndParse(SpecificClass... args) {
// method body making use of args
}
}
但由于某种原因,我不能这样做?我是否犯了某种语法错误,或者这种继承和覆盖是不允许的?具体来说,我得到一个关于@Override
的错误,因为eclipse IDE不停地提醒我执行getAndParse
。
下面是我希望上面的代码工作。在我的代码中的其他地方,有一种方法需要实现GetAndParse
的对象实例,这意味着它们具有我可以使用的getAndParse
方法。当我打电话getAndParse
该实例上编译器检查,看看我是否在正确的方式使用的T
具体实例,所以特别T
应该扩展AnotherClass
,它应该是SpecificClass
。
伪代码太抽象,需要更多信息 – irreputable 2011-03-18 00:48:48
使用'public abstract void getAndParse(Args ... args);'没有任何意义。什么是类型参数适合?编译器应该如何确定它的实际值以及它在哪里使用它? –
maaartinus
2011-03-18 00:50:19
你能给我们一个完整的例子,它实际上是可编译的(除了有问题的错误),并产生你提到的错误? – 2011-03-18 01:47:24