关于绕过传递值问题有什么建议吗?

toiithl6  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(364)

在下面的代码中,我有一个典型的java传递值问题(用processing编写;setup()==main)。

void setup()
{
  A a = new A();

  a.makeTheB(a.b);
  System.out.println(a.b); //Returns null
}

class A
{
  B b;

  public void makeTheB(B tempB)
  {
    tempB = new B();
  }
}

class B
{
  float x; //not used
}

有人有什么巧妙的技巧可以用来将新对象分配给作为参数传递的引用吗?
如果需要的话,我可以描述我的意图,但是如果有一个广义的答案,我会喜欢。
编辑:看来我需要描述一下我的意图。我使用复合模式来创建对象的递归层次结构。我有一个层次结构之外的对象,我想引用层次结构中的一个对象。我希望通过复合、责任链样式传递该对象,然后让该对象引用对其负责的对象。
我可以找到一种方法来实现这一点,尽管我确定返回值,但是如果有更简单的方法来实现的话,能够分配我在层次结构中传递的参数肯定会更好。

0wi1tuuw

0wi1tuuw1#

您可以尝试返回 B 你在课堂上创造的 A 4
如下图所示。

public class A {

    B b;

    public B makeTheB(B tempB) {
        tempB = new B();
        return tempB;
    }
}

public class B {
    float x; //not used
}

public class Test {

    public static void main(String[] args) {
        A a = new A();

        B b = a.makeTheB(a.b);
        System.out.println(b); //Returns nu

    }
}

输出: B@7852e922

hmmo2u0o

hmmo2u0o2#

你可以这样做,但也许你需要提供一个更好的描述,你想要实现什么。

void setup()
{
  A a = new A();

  a.makeTheB(a);
  System.out.println(a.b);
}

class A implements Consumer<B>
{
  B b;

  public void accept(B b) {
    this.b = b;
  }

 /**
  * Create a B, and give it to a Consumer which knows where it needs to be stored.
  */
  public void makeTheB(Consumer<B> consumer)
  {
    consumer.accept(new B());
  }
}

class B
{
  float x; //not used
}

相关问题