我有两个类和另一个对象。我需要在这些类中获得相同的对象(相同的实例),并能够在这些类中对其进行修改。在第一堂课中,我只需要获取该对象的吸气剂,在第二堂课中,我只需要使用setter。根据组成情况,这两个类都在另一个类中(我们称她为第三类)。我考虑将引用从第三类传递到第一和第二类,但是在此期间,它将为null。如果我将其设置为第二个类的某个值,则第一个类中的引用仍将引用为null?有没有更好,更合适的方法呢?
class First {
SomeClass object;
public void setObject(SomeClass object) {
this.object = object;
}
public SomeClass getObject() {
return object;
}
}
class Second {
SomeClass object;
public void setObject(SomeClass object) {
this.object = object;
}
public SomeClass getObject() {
return object;
}
}
class Third {
First first;
Second second;
SomeClass object;
public void initializeClasses(){
first.setObject(object);
second.setObject(object);
}
}
但是在initializeClassed的改进中,引用为null。因此,如果我在第二堂课中设置了该对象,那么它将是第一堂课中的相同对象吗?
答案 0 :(得分:1)
对于Java 8或更高版本,您可以使用SomeClass
而不是引用来推迟对Supplier<SomeClass>
的实际访问。您可以这样:
class A {
private Supplier<SomeClass> objectSupplier;
public SomeClass getObject() {
return objectSupplier.get();
}
public void setObjectSupplier(Supplier<SomeClass> supplier) {
objectSupplier = supplier;
}
}
并像这样创建它:
class C {
class A a;
private SomeClass object;
public void initClasses() {
a.setObjectSupplier(() -> object);
}
}
这样,C
的实例a
将始终返回C
的{{1}},即使在此期间object
中发生了变化。 / p>
答案 1 :(得分:0)
您可以像在Third Class中的静态对象那样简单地进行操作。希望对您有帮助。
class First
{
SomeClass object;
public void setObject(SomeClass object)
{
this.object = object;
}
public SomeClass getObject()
{
return Third.second.getObject();
}
}
class Second
{
SomeClass object;
public void setObject(SomeClass object)
{
this.object = object;
}
public SomeClass getObject()
{
return object;
}
}
public class Third
{
static First first;
static Second second;
SomeClass object;
public void initializeClasses()
{
first = new First();
second = new Second();
object = new SomeClass();
System.out.println(object);
second.setObject(object);
System.out.println(first.getObject());
}
public static void main(String [] args)
{
Third t = new Third();
t.initializeClasses();
}
}
答案 2 :(得分:0)
在您的代码中 -Class First和Class Second都具有SomeClass的引用变量,并且均为null且未连接。 -如果您将SomeClass对象设置为第二类中的新值,则第一类值仍将引用null。
解决方案 -传递一个初始化的对象,以便类First和类Second中的SomeClass引用指向内存中的同一对象(不为null) -切勿将SomeClass引用设置为Second Class中的新对象,这将使SomeClass引用指向First类和Second Class中的单独对象 -而是更改Class Second中SomeClass引用所引用的SomeClass对象的属性,以查看更改已反映在First Class
希望它会有所帮助:)