如何将创建的对象传递给另一个Java类
我在我的一个类中为一个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
我是否需要在原始类中创建某种类型的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.
设置“Foo”属性,或setFoo(Foo-Foo)
- 因为正在传递的对象中的“add”方法将被添加到集合中;e、 g.
addFoo(Foo-Foo)
最后,有一些技巧可以用来跨越抽象边界“走私”对象。。。这通常是个坏主意。有很多方法可以将一个对象的引用传递给另一个对象。最简单和最常见的方法是:
- 作为构造函数参数
- 作为setter方法的参数;e、 g.
设置“Foo”属性,或setFoo(Foo-Foo)
- 因为正在传递的对象中的“add”方法将被添加到集合中;e、 g.
addFoo(Foo-Foo)
最后,有一些技巧可以用来跨越抽象边界“走私”对象。。。这通常是个坏主意。您说的是getter,但我建议您使用setter(或将其传递给构造函数)。请注意,问题的答案还取决于模型中的线程数。如果你的程序是单线程的,那么你所接收到的答案都是APT。但是,如果你希望将一个对象传递给另一个线程,那么你也必须考虑数据一致性的同步。一般来说,您希望发送给其他线程的对象必须“安全发布”,以确保接收线程不会接收过时或不一致的数据。您说了getter,但我建议您使用setter(或将其传递给构造函数)。请注意,您的问题的答案还取决于模型中的线程数。如果你的程序是单线程的,那么你所接收到的答案都是APT。但是,如果你希望将一个对象传递给另一个线程,那么你也必须考虑数据一致性的同步。通常,要发送给其他线程的对象必须“安全发布”,以确保接收线程不会接收过时或不一致的数据。