我在抽象类中有一个抽象的泛型方法:
/**
* @param <Value>
*/
public abstract class TestAbstract<Value> {
public abstract <Value> void test(Value value);
}
现在,我从此类扩展并实现抽象的通用方法-这是我的尝试,但这显然是错误的。
public class Impl extends TestAbstract<Integer> {
@Override
public <Integer> void test(Integer value) {
// value is instanceOf as java.lang.Object and not java.lang.Integer !
}
}
内部test()
value
被视为Object
而不是被视为Integer
...
如何覆盖此方法,以便强制使用“整数”类?
谢谢!
您将用具体类型替换type参数。您可能打算这样做:
public abstract class TestAbstract<V> {
public abstract void test(V value);
}
(请注意,按照惯例,如果可能,类型参数应为单个大写字母)
现在,当您创建此类的具体实现时,可以将具体类型替换为该类型参数:
public class Impl extends TestAbstract<Integer> {
@Override
public void test(Integer value) {
// Here, "value" is an Integer
}
}
在这种情况下,方法本身不需要类型参数,因为它是在周围的上下文(即在类中)中定义的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句