java - Netbeans IDE 不发出有关在构造函数中调用的方法的警告

标签 java netbeans

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

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

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

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

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

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

最佳答案

确实如此。
当您在 NetBeans 中打开该文件时,您应该会在对 foo 的调用旁边看到一个黄色灯泡(提示指示器)。建议您:

  • 让 child 最终
  • 将 foo 设置为最终的、私有(private)的或静态的

如果你想让它更明显,去 Tools > Options,或者 Edit > Preferences,或者 Netbeans > Preferences(取决于在你的操作系统上)。
选择编辑器
选择提示
语言设置为Java
展开初始化
选择在构造函数中有问题的调用
Show as 更改为 Error
点击确定

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

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

关于java - Netbeans IDE 不发出有关在构造函数中调用的方法的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17231383/

相关文章:

java - 当再次新选择同一项目时, ListView 中项目的属性更改(或设置为新属性)

java - 存储/显示数组的数据输入

java - 在 JNA 中创建对象 C_CreateObject 时会发生奇怪的事情 [PKCS11]

java - 使用 Netbeans 将数据插入 Access 时出错

unit-testing - 是否可以从NetBeans运行grails单个grails单元测试类?

java - Jbox2d LiquidFun 粒子速度

java - 如何在 JPanel 及其子项上设置工具提示?

java - 使NetBeans(ant) 为一个项目生成多个jar 文件

java - 无法在 Java 中的 FreeTTS mbrola 中找到 *.app

java - NetBeans 方法 contains(Object) 错误不明确