我已经在Java程序的某个类中创建了一个对象的实例。我如何将该对象的同一个实例传递给另一个类?如何将创建的对象传递给另一个类Java
我是否需要做一些类似于在原始类中创建某种类型的getter方法以将对象传递给其他类的方法?
我已经在Java程序的某个类中创建了一个对象的实例。我如何将该对象的同一个实例传递给另一个类?如何将创建的对象传递给另一个类Java
我是否需要做一些类似于在原始类中创建某种类型的getter方法以将对象传递给其他类的方法?
“传递”它,你需要一种方法或其他类的构造函数可以接受它:
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);
您可以通过其他类的构造函数传递该对象。
简单的例子:
Class A{
}
Class B{
A a;
public B(A obj){
this.a=obj
}
}
让我们假设你想A
类的对象传递给B
类。现在你已经创建的对象是这样的:
A object = new A();
现在在你的B
类,可以编写接受A
对象的方法。它应该是public
,如果你愿意,你可以使它成为static
。
如果你想通过object
到B
,你必须要做些什么,对吧?所以你应该相应地给你的方法命名。您可能想要在B
中指定一个类型为A
的字段(我们将其称为fieldA
)。 (也许不是你想要的,但我会用这个例子)
让我们来看看方法:
public void setFieldA (A a) { fieldA = a; }
您可以调用此方法如下:
anObjectOfClassB.setFieldA (object);
当然,如果它是静态的,你不需要anObjectOfClassB
。
有很多方法将一个对象的引用传递给另一个对象。最简单和最常见的方式有:
setFoo(Foo foo)
设置“foo”属性或addFoo(Foo foo)
。然后有各种更复杂的模式,其中对象使用发布/订阅,回调,期货等传递。
最后有一些技巧可以用来跨越抽象边界“走私”对象......这通常是一个坏主意。
你说getter,但我会建议你使用setter(或在构造函数中传递它)。 –
请注意,您的问题的答案还取决于模型中的线程数。如果你的程序是单线程的,你收到的答案都是合适的。但是,如果您希望将对象传递给另一个线程,则必须考虑数据一致性的同步。通常,您希望发送到其他线程的对象必须“安全发布”以确保接收线程不会收到过时的或不一致的数据。 – scottb