2015-10-10 131 views
0

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

我是否需要做一些类似于在原始类中创建某种类型的getter方法以将对象传递给其他类的方法?

+0

你说getter,但我会建议你使用setter(或在构造函数中传递它)。 –

+0

请注意,您的问题的答案还取决于模型中的线程数。如果你的程序是单线程的,你收到的答案都是合适的。但是,如果您希望将对象传递给另一个线程,则必须考虑数据一致性的同步。通常,您希望发送到其他线程的对象必须“安全发布”以确保接收线程不会收到过时的或不一致的数据。 – scottb

回答

0

“传递”它,你需要一种方法或其他类的构造函数可以接受它:

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); 
0

您可以通过其他类的构造函数传递该对象。

简单的例子:

Class A{ 
} 

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

让我们假设你想A类的对象传递给B类。现在你已经创建的对象是这样的:

A object = new A(); 

现在在你的B类,可以编写接受A对象的方法。它应该是public,如果你愿意,你可以使它成为static

如果你想通过objectB,你必须要做些什么,对吧?所以你应该相应地给你的方法命名。您可能想要在B中指定一个类型为A的字段(我们将其称为fieldA)。 (也许不是你想要的,但我会用这个例子)

让我们来看看方法:

 
public void setFieldA (A a) { 
    fieldA = a; 
} 

您可以调用此方法如下:

anObjectOfClassB.setFieldA (object); 

当然,如果它是静态的,你不需要anObjectOfClassB

0

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

  • 作为构造函数的参数,
  • 作为setter方法的参数;例如setFoo(Foo foo)设置“foo”属性或
  • 作为要传递的对象中的“添加”方法将要添加到集合;例如addFoo(Foo foo)

然后有各种更复杂的模式,其中对象使用发布/订阅,回调,期货等传递。

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

相关问题