Spring Boot 如何在类中只调用一次方法,即使类的对象被创建了无数次

ruarlubt  于 2024-01-06  发布在  Spring
关注(0)|答案(2)|浏览(296)

我想用一个方法设置时间限制:

  1. setTimeLimit()

字符串
但是,这个setTimeLimit()存在于一个类中,并且对象是在列表迭代时创建的,如下所示:

  1. result.forEach(item -> {
  2. MyClass myClass = new MyClass();
  3. myClass.setSomething(item.myVariable);
  4. });


setTimeLimit()setSomething()内部被调用,因为列表迭代了很多次setTimeLimit()被调用,我想在整个迭代过程中只调用一次。我如何才能实现这一点或解决这个问题?
任务是设置所有图像的URL时限。
我尝试自动加载MyClass的构造函数,并在构造函数中调用setTimeLimit(),但我认为setTimeLimit()是在注入依赖项时调用的,因此我不希望在DI期间设置此参数。

pu82cl6c

pu82cl6c1#

我觉得你应该试试这样的:

  1. private void setTimeLimit(Object timeLimit) {
  2. if (Objects.isNull(this.timeLimit)) {
  3. this.timeLimit = timeLimit;
  4. }
  5. }

字符串
但是,我建议您将类结构更改为第一次只初始化一次。

ql3eal8s

ql3eal8s2#

一个setter不应该关心它在外部被调用的时间和次数。如果你不想把setTimeLimit()暴露在类的外部,并且你只想在每次迭代中调用它一次,那么接受一个“something”的List而不是一个“something”怎么样?
ie.

  1. public class MyClass {
  2. public void setSomethings(List<String> somethings) {
  3. setTimeLimit();
  4. somethings.forEach(this::setSomething);
  5. }
  6. private void setSomething(String something) {
  7. // ...
  8. }
  9. private void setTimeLimit() {
  10. // ...
  11. }
  12. }

字符串
这样,MyClass就拥有了它想要的控件,而不会破坏MyClass和它的使用者之间的功能关系。

展开查看全部

相关问题