1

让我们假设,我们有一个使用类ABC的漂亮的小 Java 项目D。要访问一个对象、它的方法或属性,需要一个指向它的链接:实例 ID 或引用。如果我只是在 vm 当前类中创建了一个类的实例,这很容易:

在课堂上A

B bi = new B();

使用bi,我可以访问类B中类提供的所有属性和方法A

但是,当我现在上课时B

C ci =  new C();

当然,在课堂上B我可以访问C/提供的所有内容ci。但是如何利用C/ ciinA呢?没有可用的对象引用。只是创建一个新的没有帮助:一个额外的实例C,不同的工作数据集。

我找到了两种方法。

  1. Cby所需的所有内容都A必须被封装B并通过B/调用bi。缺点很明显。

  2. 我回到了我早期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 人解决问题的方法是什么?

4

0 回答 0