9

Netbeans IDE 擅长发现可能给您带来麻烦的代码。为什么没有发出警告

public class Base
{
    Base(...)
    {
        ...;
    }

    public void foo()
    {
        ...;
    }
}

public class Child extends Base
{
    Child(...)
    {
        super(...);
        foo();
    }
}

鉴于我在子构造函数中调用基类函数 foo() ?当然,这是完全合法的,因为基础对象是通过调用 foo() 来构造的,但是 foo() 隐式地是一个虚拟方法,所以我真的希望得到一个警告,除非 foo() 被标记为 final

我认为如果您从未标记为 final 的子类构造函数调用任何基类函数,IDE 应该发出警告。

4

1 回答 1

3

确实如此。
在 NetBeans 中打开文件时,您应该会在调用foo. 建议您:

  • 使孩子最终
  • 使 foo 成为最终的、私有的或静态的

如果您希望它更明显,请转到Tools > Options、 或Edit > Preferences、 或Netbeans > Preferences(取决于您的操作系统)。
选择Editor
选择Hints
设置LanguageJava
展开Initialization
选择Problematic call in the constructor
更改Show asError
单击OK

现在该行以及您的文件将获得一个红色错误标志。

请注意,这些都不会阻止您忽略该指标。代码仍然是合法的 Java,所以 NB 不会阻止你编译。

于 2013-06-23T03:49:03.037 回答