作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想覆盖一个参数类型为Object
的方法:
public void setValue(Object value) {
// ...
}
并使该参数具有通用类型 T
:
@Override
public void setValue(T value) {
super.setValue(value);
}
我如何在 Java 中执行此操作?
在 Eclipse 中我得到这些错误:
Multiple markers at this line
- The type parameter T is hiding the type T
- Name clash: The method setValue(T) of type TextField<T> has the
same erasure as setValue(Object) of type JFormattedTextField but does not
override it
- The method setValue(T) of type TextField<T> must override or
implement a supertype method
最佳答案
您不能让重写方法接受比它重写的方法更窄的类型。
如果可以,以下内容将成为可能:
class A {
public setValue(Object o) {…}
}
class B<T> extends A {
@Override
public setValue(T o) {…};
}
A a = new B<String>(); // this is valid
a.setValue(new Integer(123)); // this line would compile, but make no sense at runtime
关于java - 如何用泛型参数覆盖具有 Object 参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319438/
我是一名优秀的程序员,十分优秀!