有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从私有类访问公共类中的方法/字段

从同一文件中的私有类访问公共类中私有的方法/字段是错误的做法还是“愚蠢的”。在我的例子中,我有一个方法可以将GUI中的组件添加到面板(GridBagLayout),所以我为这个做了一个方法。但是,我有三个面板,因此在每个私有类中没有创建addComponent方法,而是在公共类中创建私有方法addComponent

这是我的课程概述:

  • 注册表问题GUI(公共)
    • 这个类有很多方法,其中一个是名为addComponent的私有方法
    • 我还有三个扩展JPanel的私有类,所有这些类都以完全相同的方式使用addComponent

回到我的问题上来,这是一种好的/坏的方法吗

提前谢谢


共 (6) 个答案

  1. # 1 楼答案

    私有内部类是公共“外部”类的一部分。因此,访问外部类的私有成员是完全可以接受的

  2. # 2 楼答案

    我认为这是完全可以接受的——我过去也做过类似的事情。允许从内部类访问私有变量是有原因的,在许多情况下(不仅仅是这个),这样做是有意义的

  3. # 3 楼答案

    非常好

    您需要私有类,因为(我猜)您必须实现某些接口(例如EventListener等)。你把它们设为内部类,因为它们与外部类无关。但是您可以在外部类中重复使用创建私有实用程序的代码。所以,你是一个优秀的程序员

  4. # 4 楼答案

    总的来说,我看不出有什么问题。私有内部类是外部类实现的一部分,所以封装不会被破坏。消除重复是一件好事

    AFAIK这个习惯用法在类库中使用了很多次(毕竟,它存在的原因是:-),例如在集合框架中实现Iterator时。其典型用法往往具有以下共同特点:

    • 但是,您需要在不发布具体实现类的情况下实现特定接口
    • 该实现与某个公共类紧密绑定(使这两个类实际上成为组件

    在私有内部类中实现接口可以很好地同时满足这两个约束,使两个类的逻辑相关性显式,并封装实现类

  5. # 5 楼答案

    视情况而定

    如果私有类是微不足道的助手,那么可以将它们看作是主类实现的一部分

    但是,您可能希望私有类仅访问其包含类的非私有方法,如果:

    • 它是一个非平凡的嵌套类
    • 例如,如果有一天您希望将嵌套类移动为顶级类
  6. # 6 楼答案

    一般来说,这是好的。然而,根据这些JPanel类是什么,将它们划分为单独的类可能更有意义。甚至可以让他们实现相同的接口,这样您的RegisterQuestionGUI就可以以相同的方式与他们交互