";字段隐藏另一个字段“;java-Netbeans中的警告

";字段隐藏另一个字段“;java-Netbeans中的警告,java,netbeans,warnings,compiler-warnings,Java,Netbeans,Warnings,Compiler Warnings,我正在编写两个类的代码 public class ServerPanel extends JPanel{ private EventListenerList listenerList = new EventListenerList(); (...) } 及 现在,Netbeans警告我字段隐藏另一个字段,即listenerList变量 所以我的问题是,这是一个严重的问题吗?以后添加/删除事件时会出现问题吗 这是好的java练习吗 我该怎么办 谢谢 这不是一个编译错误,这两个字段是分开处理的,

我正在编写两个类的代码

public class ServerPanel extends JPanel{

private EventListenerList listenerList = new EventListenerList();
(...)
}

现在,Netbeans警告我字段隐藏另一个字段,即listenerList变量

所以我的问题是,这是一个严重的问题吗?以后添加/删除事件时会出现问题吗

这是好的java练习吗

我该怎么办


谢谢

这不是一个编译错误,这两个字段是分开处理的,因此不会有任何中断。但是,我不建议这样做,因为这可能会让任何从事代码工作的人(包括您)感到非常困惑

您还应该知道,您不会替换超类中的
listenerList
字段,而是创建一个同名的新字段

[编辑]

我要澄清,;名字不完全一样;完全限定名称不同:

javax.swing.JPanel.listenerList
whatever.yourpackageis.ServerPanel.listenerList
whatever.yourpackageis.DetalsPanel.listenerList

隐藏场

在类中,与类中的字段同名的字段 超类隐藏超类的字段,即使其类型为 不一样。在子类中,超类中的字段不能为空 由其简单名称引用。相反,必须访问该字段 通过super,这将在下一节中介绍。通常地 总之,我们不建议隐藏字段,因为这会使代码变得困难 阅读

避免“重新定义”字段,除非它是真正需要的。保持名称的清晰性以避免混淆,并使文档查找更加容易。在任何情况下,JPanel/超类代码都不会受到影响(因为只有方法可以是虚拟的),因此,除非超类的
listenerList
是打算从重新定义的类(或子类)中使用的,否则不会突然中断任何东西。java语言的一个非常好的“特性”[sarcasm]。相同的名称,但不是相同的属性,而且编译器不会对此抱怨,很好!
javax.swing.JPanel.listenerList
whatever.yourpackageis.ServerPanel.listenerList
whatever.yourpackageis.DetalsPanel.listenerList