提问人:SternK 提问时间:1/18/2021 最后编辑:samabcdeSternK 更新时间:1/21/2021 访问量:194
如何覆盖使用原始类型的方法?
How to override method that uses raw types?
问:
我有以下无法更改的旧类:
import java.util.logging.Logger;
public class SuperClass
{
// ...
public Logger getLogger(Class c) {
// ...
}
}
我想在我的类中重写该方法。是否可以在不使用原始类型的情况下做到这一点?getLogger
答:
1赞
Jatin
1/21/2021
#1
如评论中所述,您无法覆盖。这也是有道理的,因为覆盖只是意味着用超类可以做的任何事情也可以用子类来做。如果 SuperClass 可以接受(所有种类),那么子类也应该允许这样做。getLogger
Class
在这种情况下,如果符合您的目的,您可以创建桥接方法:
class SubClass<T> extends SuperClass {
@Override
public Logger getLogger(Class c) {
return getLoggerT(c);
}
public Logger getLoggerT(Class<T> c) {
return super.getLogger(c);
}
}
这个类可以自始至终使用。
评论
0赞
SternK
1/21/2021
我不明白为什么我们不能用代替.为什么不允许这样做?Class<?> c
Class c
上一个:参数化类“ABC”的原始使用
下一个:将原始流收集到类型化集合中?
评论
Class c
Class<?>
@SuppressWarnings("rawtypes")
@Override
Class<?>
SuperClass