Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果无法将对象引用传递给参数/返回列表,则访问对象引用_Java_Object_Reference - Fatal编程技术网

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提供的所有内

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

在类
A

B bi = new B();
Common.ci.setValue("Value");
使用
bi
,我可以访问class
A
中class
B
提供的所有属性和方法

但是,当我现在在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=ci

  • 现在使用
    C
    /
    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)吗?