我正在编写两个班级。
public class ServerPanel extends JPanel{
private EventListenerList listenerList = new EventListenerList();
(...)
}
和
public class DetailsPanel extends JPanel{
private EventListenerList listenerList = new EventListenerList();
(...)
}
现在,Netbeans警告我,对于listenerList变量,字段隐藏了另一个字段。
所以我的问题是,这是一个严重的问题吗?以后在添加/删除事件时会遇到问题吗?
这是一个很好的java练习吗?
我该怎么办?
谢谢!
答案 0 :(得分:4)
这不是编译错误,并且这两个字段是分开处理的,所以什么都不会中断。但是,我不建议这样做,因为对于代码工作的任何人来说,包括你在内都会非常困惑。
您还应该知道,您不会替换超类中的listenerList
字段,只需创建一个具有相同名称的新字段。
<强> [编辑] 强>
我应该澄清;这些名字 完全相同;完全限定的名称是不同的:
javax.swing.JPanel.listenerList
whatever.yourpackageis.ServerPanel.listenerList
whatever.yourpackageis.DetalsPanel.listenerList
答案 1 :(得分:4)
https://docs.oracle.com/javase/tutorial/java/IandI/hidevariables.html
隐藏字段
在一个类中,一个与该字段中的字段同名的字段 超类隐藏了超类的字段,即使它们的类型是 不同。在子类中,超类中的字段不能 由简单名称引用。相反,必须访问该字段 通过超级,这将在下一节中介绍。通常 说来,我们不建议隐藏字段,因为它会使代码变得困难 阅读。