【发布时间】:2012-04-26 15:55:29
【问题描述】:
我有以下设置,它给我一条消息,指出“构造函数调用可覆盖的方法”。我知道这正在发生,但我的问题是如何修复它,以便代码仍然有效并且消息消失。
public interface Foo{
void doFoo();
}
public class FooImpl implements Foo{
@Override{
public void doFoo(){
//.. Do important code
}
}
public class Bar{
private FooImpl fi;
public Bar(){
fi = new FooImpl();
fi.doFoo(); // The message complains about this line
}
}
谢谢!
【问题讨论】:
-
您显示的代码在调用可重写方法之后 它被称为构造函数,而不是 from 构造函数,对吗?还是我错过了什么?
-
这是关于特定 IDE 的吗?因为从编译器的角度来看,我认为这没有任何问题。
-
@user973479 afaik 只有在 doFoo() 是 Bar 本身的方法时才会出现此警告。所以无论是你的例子还是你的 IDE 都是错误的。
-
@user973479 你用的是什么IDE? IntelliJ、javac 和 eclipse 都没有给我一个警告,很明显没有理由让
doFoo成为最终的 - 只有当我们调用constructed实例的非最终实例方法时才有意义。跨度> -
我正在使用 SONAR 进行代码覆盖,并收到了该代码的消息。我想也许 SONAR 有错误?
标签: java constructor overriding