如何将创建的对象传递给另一个Java类

如何将创建的对象传递给另一个Java类,java,Java,我在我的一个类中为一个Java程序创建了一个对象实例。如何将该对象的同一实例传递给另一个类 我是否需要在原始类中创建某种类型的getter方法来将对象传递给另一个类?您可以通过另一个类的构造函数传递对象 简单的例子: Class A{ } Class B{ A a; public B(A obj){ this.a=obj } } 您可以通过另一个类的构造函数传递对象 简单的例子: Class A{ } Class B{ A a; publ

我在我的一个类中为一个Java程序创建了一个对象实例。如何将该对象的同一实例传递给另一个类


我是否需要在原始类中创建某种类型的getter方法来将对象传递给另一个类?

您可以通过另一个类的构造函数传递对象

简单的例子:

Class A{
}

Class B{
    A a;
    public B(A obj){
      this.a=obj
    }
}

您可以通过另一个类的构造函数传递对象

简单的例子:

Class A{
}

Class B{
    A a;
    public B(A obj){
      this.a=obj
    }
}

假设要将类
A
的对象传递给类
B
。现在,您已经创建了如下对象:

A object = new A ();
现在在
B
类中,您可以编写一个方法来接受
a
对象。它应该是
公共的
,如果您愿意,可以将其设置为
静态的

如果您想将
对象
传递到
B
,您必须想对它做些什么,对吗?因此,您应该相应地命名您的方法。您可能希望在
B
中指定类型为
a
(我们称之为
fieldA
)的字段。(也许这不是你想要的,但我会用这个例子)

让我们看看这个方法:

public void setFieldA (A a) { fieldA = a; }
当然,如果对象是静态的,则不需要
anObjectOfClassB

假设要将类
A
的对象传递给类
B
。现在,您已经创建了如下对象:

A object = new A ();
现在在
B
类中,您可以编写一个方法来接受
a
对象。它应该是
公共的
,如果您愿意,可以将其设置为
静态的

如果您想将
对象
传递到
B
,您必须想对它做些什么,对吗?因此,您应该相应地命名您的方法。您可能希望在
B
中指定类型为
a
(我们称之为
fieldA
)的字段。(也许这不是你想要的,但我会用这个例子)

让我们看看这个方法:

public void setFieldA (A a) { fieldA = a; } 当然,如果它是静态的,则不需要
anObjectOfClassB

要“传递”它,您需要另一个类中可以接受它的方法或构造函数:

public class Other {
    // either
    public Other(MyClass obj) {
        // do something with obj
    }
    // or
    public void method(MyClass obj) {
        // do something with obj
    }
}
然后调用构造函数/方法:

MyClass x = new MyClass();

Other other = new Other();
other.method(x);
要“传递”它,您需要另一个类中可以接受它的方法或构造函数:

public class Other {
    // either
    public Other(MyClass obj) {
        // do something with obj
    }
    // or
    public void method(MyClass obj) {
        // do something with obj
    }
}
然后调用构造函数/方法:

MyClass x = new MyClass();

Other other = new Other();
other.method(x);

有许多方法可以将一个对象的引用传递给另一个对象。最简单和最常见的方法是:

  • 作为构造函数参数
  • 作为setter方法的参数;e、 g.
    setFoo(Foo-Foo)
    设置“Foo”属性,或
  • 因为正在传递的对象中的“add”方法将被添加到集合中;e、 g.
    addFoo(Foo-Foo)
还有各种更复杂的模式,其中使用发布/订阅、回调、未来等传递对象


最后,有一些技巧可以用来跨越抽象边界“走私”对象。。。这通常是个坏主意。

有很多方法可以将一个对象的引用传递给另一个对象。最简单和最常见的方法是:

  • 作为构造函数参数
  • 作为setter方法的参数;e、 g.
    setFoo(Foo-Foo)
    设置“Foo”属性,或
  • 因为正在传递的对象中的“add”方法将被添加到集合中;e、 g.
    addFoo(Foo-Foo)
还有各种更复杂的模式,其中使用发布/订阅、回调、未来等传递对象


最后,有一些技巧可以用来跨越抽象边界“走私”对象。。。这通常是个坏主意。

您说的是getter,但我建议您使用setter(或将其传递给构造函数)。请注意,问题的答案还取决于模型中的线程数。如果你的程序是单线程的,那么你所接收到的答案都是APT。但是,如果你希望将一个对象传递给另一个线程,那么你也必须考虑数据一致性的同步。一般来说,您希望发送给其他线程的对象必须“安全发布”,以确保接收线程不会接收过时或不一致的数据。您说了getter,但我建议您使用setter(或将其传递给构造函数)。请注意,您的问题的答案还取决于模型中的线程数。如果你的程序是单线程的,那么你所接收到的答案都是APT。但是,如果你希望将一个对象传递给另一个线程,那么你也必须考虑数据一致性的同步。通常,要发送给其他线程的对象必须“安全发布”,以确保接收线程不会接收过时或不一致的数据。