让我们假设,我们有一个使用类A
、B
和C
的漂亮的小 Java 项目D
。要访问一个对象、它的方法或属性,需要一个指向它的链接:实例 ID 或引用。如果我只是在 vm 当前类中创建了一个类的实例,这很容易:
在课堂上A
:
B bi = new B();
使用bi
,我可以访问类B
中类提供的所有属性和方法A
。
但是,当我现在上课时B
:
C ci = new C();
当然,在课堂上B
我可以访问C
/提供的所有内容ci
。但是如何利用C
/ ci
inA
呢?没有可用的对象引用。只是创建一个新的没有帮助:一个额外的实例C
,不同的工作数据集。
我找到了两种方法。
C
by所需的所有内容都A
必须被封装B
并通过B
/调用bi
。缺点很明显。我回到了我早期
FORTRAN
的经验并创建了一个Common
区域。一个纯粹的静态类。如果B
创建ci
,它会将它的引用复制到区域中,例如:C ci = 新 C(); Common.ci = ci;
现在很容易A
使用 C
/ ci
:
在课堂上A
:
Common.ci.setValue("Value");
在著名的绘画方法中,我遇到了一个非常相似的问题:
protected void paintComponent(Graphics g)
到目前为止,我发现的所有示例都在绘制方法本身中仔细创建了数据。但是,如果要绘制的数据来自外部,如何处理?没有参数可以为paint 方法提供数组。我决定像我的解决方案一样使用静态参考2
在我看来,这两个潜在的解决方案都没有灵感或 Java 风格。有经验的 Java 人解决问题的方法是什么?