Java的;从另一个类访问成员实例变量

时间:2010-08-11 21:38:09

标签: java variables class

我有以下结构:

public class A {
     private javax.swing.JLabel fullName;

     public class B {
             public B() {
                    fullName.setText("Martha Stewart");
             }
     }
     ...
     ...
     ...
}

我的目标是让B(目前是A的子类)在一个单独的类中。

问题是:当我将这两个类分开时,我失去了对JLabel的.setText()调用的功能。我意识到如果B在一个单独的类中,我将不得不在A类中编写一个公共setter方法。

然而,这并不合理,因为我有大约100个按钮,每个按钮使用4-5个不同的功能。为每个函数创建一个getter / setter方法是不合理的恕我直言。

我正试图绕过一个更好的解决方案......你们中的任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

B 不是 A的子类。它是A中的嵌套(内部)类。

但是,您不应该尝试访问其他类型的字段 - 它会破坏封装。属性是一个更好的解决方案 - 或者是setFullNameText方法,它自己调用fullName.setText()。仅仅因为你有100个按钮(哎哟!)并不意味着是时候把封装扔出窗外了。它确实意味着您可能想要考虑将这100个字段分组为较小的类...

答案 1 :(得分:2)

不要让类修改另一个类的属性,这会破坏封装。如果你不能忍受getter和setter,我会建议一个配置对象(如地图),它可以提供给构造函数和/或主GUI类的setter。

顺便说一下:

  

我有大约100个按钮

我认为这是一个主要问题。您应该在代表控件组的几个类中打破GUI。