即使多次创建 class 的对象,如何只调用一次 class 中的方法
how to call a method in class just once even if the object for the class is created numerous times
我想使用以下方法设置时间限制:
setTimeLimit()
但是,这个 setTimeLimit()
存在于 class 中,并且对象是在列表迭代时创建的,如下所示:
result.forEach(item -> {
MyClass myClass = new MyClass();
myClass.setSomething(item.myVariable);
});
setTimeLimit()
在 setSomething()
内部被调用,因为列表迭代多次 setTimeLimit()
被调用,我想在整个迭代期间只调用一次。我怎样才能实现这个或解决这个问题?
任务是为所有图像设置 URL 时间限制。
我尝试自动装配 MyClass
的构造函数并在构造函数中调用 setTimeLimit()
,但我认为 setTimeLimit()
是在注入依赖项时调用的,所以我不想要这个在 DI 期间设置。
我认为你应该尝试这样的事情:
private void setTimeLimit(Object timeLimit) {
if (Objects.isNull(this.timeLimit)) {
this.timeLimit = timeLimit;
}
}
但是,我建议您将 class 结构更改为第一次只初始化一次。
A setter 不应该关心它何时或多少次被外部调用。如果您不想在 class 之外公开 setTimeLimit()
,并且您只希望每次迭代调用一次,那么接受 "something" 的列表而不是单个 "something".
即
public class MyClass {
public void setSomethings(List<String> somethings) {
setTimeLimit();
somethings.forEach(this::setSomething);
}
private void setSomething(String something) {
// ...
}
private void setTimeLimit() {
// ...
}
}
这样 MyClass 就可以拥有它想要的控制权,而不会破坏 MyClass 与其消费者之间的功能关系。
我想使用以下方法设置时间限制:
setTimeLimit()
但是,这个 setTimeLimit()
存在于 class 中,并且对象是在列表迭代时创建的,如下所示:
result.forEach(item -> {
MyClass myClass = new MyClass();
myClass.setSomething(item.myVariable);
});
setTimeLimit()
在 setSomething()
内部被调用,因为列表迭代多次 setTimeLimit()
被调用,我想在整个迭代期间只调用一次。我怎样才能实现这个或解决这个问题?
任务是为所有图像设置 URL 时间限制。
我尝试自动装配 MyClass
的构造函数并在构造函数中调用 setTimeLimit()
,但我认为 setTimeLimit()
是在注入依赖项时调用的,所以我不想要这个在 DI 期间设置。
我认为你应该尝试这样的事情:
private void setTimeLimit(Object timeLimit) {
if (Objects.isNull(this.timeLimit)) {
this.timeLimit = timeLimit;
}
}
但是,我建议您将 class 结构更改为第一次只初始化一次。
A setter 不应该关心它何时或多少次被外部调用。如果您不想在 class 之外公开 setTimeLimit()
,并且您只希望每次迭代调用一次,那么接受 "something" 的列表而不是单个 "something".
即
public class MyClass {
public void setSomethings(List<String> somethings) {
setTimeLimit();
somethings.forEach(this::setSomething);
}
private void setSomething(String something) {
// ...
}
private void setTimeLimit() {
// ...
}
}
这样 MyClass 就可以拥有它想要的控制权,而不会破坏 MyClass 与其消费者之间的功能关系。