繁体   English   中英

由于java没有引用,因此如何在两个单独的类之间传递信息?

[英]As java doesn't have referencing, how does one pass information between two separate classes?

非常抱歉,我确实不知道如何命名此问题。 如果有人有更好的选择,请随时编辑。 关于我的问题

public class Foo()
{
    String name;
    public Foo()
    {
        Bar temp = new Bar();
    }
}    

public class Bar()
{
    public Bar()
    {
        setFooName("newName");
    }

    public void setFooName(String name)
    {   
        // Is it possible call a method in Foo?
    }
}    


public class test {
    static public void main(String[] args) 
    {
        Foo foobar = new Foo();
    }
}    

我对Java还是很陌生,所以我不确定这是否可能,但是使用C ++时,通常会在'Boo'类中使用'Foo'的局部变量,然后将对该对象的引用传递给Bar的构造函数,然后将其分配给Bar中的局部变量。

由于java没有引用,因此我对此事感到困惑。 我要这样做的原因是我拥有的示例是我需要在类内部创建一个GUI对象,然后将来自GUI对象的信息发送回创建它的类中。

我确实希望一切都有意义,如果没有,对不起。

我认为您正在陷入困境。

以下示例通过Bar的构造函数将Foo引用的副本传递给Bar 现在,这使Bar可以访问Foo实例的属性。 它不允许您做的是在两个引用之间进行更改(即在bar中分配新的Foo引用不会更改先前的引用)

public class Foo()
{
    String name;
    public Foo()
    {
        Bar temp = new Bar(this);
    }
}    

public class Bar()
{
    private Foo foo;
    public Bar(Foo foo)
    {
        this.foo = foo;
        setFooName("newName");
    }

    public void setFooName(String name)
    {   
        // Is it possible call a method in Foo?
    }
}    


public class test {
    static public void main(String[] args) 
    {
        Foo foobar = new Foo();
    }
}  

然后Bar可以调用Foo提供的任何修饰符,并且它将为每个引用该实例的人更改Foo那些单独属性...

我希望这接近您的要求:P

实际上,您可以使用Java执行此操作。 Java有引用,但没有指针。 令人困惑的是,对于C ++爱好者,这些引用可以为null。

这意味着您当然可以执行以下操作:

public class Bar {
    private Foo foo;
    public Bar(Foo foo) {
        this.foo = foo;
    }
    public setFooName(String name) {
        foo.setName(name);
    }
}
public class Foo {
    private String name;
    public Foo() {
        Bar temp = new Bar(this);
        temp.setFooName("fooname");
    }
}

但在这种情况下,我不确定为什么您不会只写:

public class Foo {
    private String name;
    public Foo() {
        this.name = "fooname";
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM