作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个类和另一个对象。我需要在这些类中获取相同的对象(相同的实例),并能够从这些类中修改它。在第一类中,我只需要该对象的 getter,在第二类中,我需要 setter。根据组合,这两个类都属于一个类(我们称她为第三个类)。我正在考虑将引用从第三类传递给第一类和第二类,但在此期间,它将为空。如果我将其设置为第二类中的某个值,那么第一类中的引用仍然会引用 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 的那一刻,引用为空。因此,如果我在第二类中设置之后,它将与第一类中的对象相同?
最佳答案
对于 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
的object
,即使它在 C
中发生变化在此期间。
关于java - 如何在Java中修改两个类的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52054121/
我是一名优秀的程序员,十分优秀!