作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在抽象类中有一个抽象泛型方法:
/**
* @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
...
如何重写此方法,以便我被迫使用“整数”类?
谢谢!
最佳答案
您正在用具体类型替换类型参数。您可能打算做这样的事情:
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
}
}
在这种情况下,方法本身不需要类型参数,因为它是在周围上下文中(即在类中)定义的。
关于java - 实现抽象泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27875861/
我是一名优秀的程序员,十分优秀!