java从私有类访问公共类中的方法/字段
从同一文件中的私有类访问公共类中私有的方法/字段是错误的做法还是“愚蠢的”。在我的例子中,我有一个方法可以将GUI中的组件添加到面板(GridBagLayout),所以我为这个做了一个方法。但是,我有三个面板,因此在每个私有类中没有创建addComponent方法,而是在公共类中创建私有方法addComponent
这是我的课程概述:
- 注册表问题GUI(公共)
- 这个类有很多方法,其中一个是名为addComponent的私有方法李>
- 我还有三个扩展JPanel的私有类,所有这些类都以完全相同的方式使用addComponent李>
回到我的问题上来,这是一种好的/坏的方法吗
提前谢谢
# 1 楼答案
私有内部类是公共“外部”类的一部分。因此,访问外部类的私有成员是完全可以接受的
# 2 楼答案
我认为这是完全可以接受的——我过去也做过类似的事情。允许从内部类访问私有变量是有原因的,在许多情况下(不仅仅是这个),这样做是有意义的
# 3 楼答案
非常好
您需要私有类,因为(我猜)您必须实现某些接口(例如EventListener等)。你把它们设为内部类,因为它们与外部类无关。但是您可以在外部类中重复使用创建私有实用程序的代码。所以,你是一个优秀的程序员
# 4 楼答案
总的来说,我看不出有什么问题。私有内部类是外部类实现的一部分,所以封装不会被破坏。消除重复是一件好事
AFAIK这个习惯用法在类库中使用了很多次(毕竟,它存在的原因是:-),例如在集合框架中实现
Iterator
时。其典型用法往往具有以下共同特点:在私有内部类中实现接口可以很好地同时满足这两个约束,使两个类的逻辑相关性显式,并封装实现类
# 5 楼答案
视情况而定
如果私有类是微不足道的助手,那么可以将它们看作是主类实现的一部分
但是,您可能希望私有类仅访问其包含类的非私有方法,如果:
# 6 楼答案
一般来说,这是好的。然而,根据这些JPanel类是什么,将它们划分为单独的类可能更有意义。甚至可以让他们实现相同的接口,这样您的RegisterQuestionGUI就可以以相同的方式与他们交互