从同一文件中的私有类访问公共类中的私有方法/字段是不好的做法还是“愚蠢”。在我的情况下,我有一个方法,将我的GUI中的组件添加到面板(GridBagLayout),所以我已经为此创建了一个方法。但是我有三个面板,所以我没有在每个私有类中创建一个addComponent方法,而是在公共类中有私有方法addComponent。
这是我班级的概述:
回到我的问题,这是一个好/坏的方式吗?
提前致谢。
答案 0 :(得分:4)
私人内部类是公共“外部”类的一部分。因此,访问外部类的私有成员是完全可以接受的。
答案 1 :(得分:3)
总的来说,我没有看到它的问题。私有内部类是外部类的实现的一部分,因此封装不会被破坏。 OTOH摆脱重复是一件好事。
AFAIK这个成语在类库中被多次使用(毕竟它是有原因的:-),例如在Collection Framework中实现Iterator
时。它的典型用法往往具有以下共同特征:
在私有内部类中实现接口可以很好地同时满足这两个约束,使两个类的逻辑依赖性显式化,并封装实现类。
答案 2 :(得分:2)
很棒。
你需要私有类,因为(我猜)你必须实现某些接口(即EventListener等)。你将它们作为内部类,因为它们与外部类无关。但是您重新使用在外部类中创建私有实用程序的代码。所以,你是一个优秀的程序员。
答案 3 :(得分:2)
这取决于。
如果私有类是琐碎的帮助者,将它们视为主类实现的一部分是合理的。
但是,如果出现以下情况,您可能希望私有类仅访问其包含类的非私有方法:
答案 4 :(得分:1)
我认为那是完全可以接受的 - 我过去做过类似的事情。允许从内部类访问私有变量是有原因的,在许多情况下(不仅仅是这个),这样做是有道理的。
答案 5 :(得分:1)
总的来说这很好。但是,根据这些JPanel类的内容,将它们分解为单独的类可能更有意义。甚至可能让它们实现相同的接口,以便您的RegisterQuestionGUI可以以相同的方式与它们进行交互。