Java 如果无法将对象引用传递给参数/返回列表,则访问对象引用
让我们假设,我们有一个很好的小Java项目,使用类Java 如果无法将对象引用传递给参数/返回列表,则访问对象引用,java,object,reference,Java,Object,Reference,让我们假设,我们有一个很好的小Java项目,使用类a、B、C和D。 要访问对象、对象的方法或属性,需要一个指向该对象的链接:实例ID或引用。如果我只是在vm current class中创建了该类的实例,这很容易: 在类A: B bi = new B(); Common.ci.setValue("Value"); 使用bi,我可以访问classA中classB提供的所有属性和方法 但是,当我现在在B班的时候: C ci = new C(); 当然,在B课上,我可以访问C/ci提供的所有内
a
、B
、C
和D
。
要访问对象、对象的方法或属性,需要一个指向该对象的链接:实例ID或引用。如果我只是在vm current class中创建了该类的实例,这很容易:
在类A
:
B bi = new B();
Common.ci.setValue("Value");
使用bi
,我可以访问classA
中classB
提供的所有属性和方法
但是,当我现在在B班的时候:
C ci = new C();
当然,在B
课上,我可以访问C
/ci
提供的所有内容。但是如何利用A
中的C
/ci
?没有可用的对象引用。
仅仅创建一个新实例是没有帮助的:另一个C
实例,不同的数据工作集
我找到了两种方法
A
从C
所需的所有内容必须封装在B
中,并通过B
/bi
进行调用。缺点是显而易见的FORTRAN
体验,并创建了一个Common
区域。纯静态类。如果B
创建ci
,它会将其引用复制到区域中,如:
C ci=新的C();
Common.ci=ciC
/ci
很容易A
:
在类A
:
B bi = new B();
Common.ci.setValue("Value");
在著名的绘画方法中,我遇到了一个非常相似的问题:
protected void paintComponent(Graphics g)
到目前为止,我发现的所有示例都仔细地在paint方法本身中创建了数据。但是,如果要绘制的数据来自外部,如何处理呢?没有参数为绘制方法提供数组。我决定使用静态参考,如我的解决方案2
在我看来,这两个潜在的解决方案都没有灵感或Java风格。
一个有经验的Java人员解决这个问题的解决方案是什么?你可以在B类中为C类提供一个getter。因此,在a类中你可以说bi.getC().someMethod()。C类中有什么,一些常见的功能?谢谢你的建议。这是有道理的。在我的例子中,我有一个中央swing框架和一些子窗口,当然是由不同的类组成的。中心帧和初始帧必须控制子帧和子帧。您知道如何提供(除了一些静态类技巧外)我们必须重写的方法以使用它,并且不接受其他特定于项目的参数(如paintComponent)吗?