как вызвать метод в классе только один раз, даже если объект для класса создан несколько раз

попробуйте кэш для сериализации

        do {
            if let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String : Any] { // as? data type
                if let otherDict = json["dataKey"] as? [String : Any] {
                    //do something
                }
            }
        } catch {
            // can't json serialization
        }
0
задан Jacob G. 16 January 2019 в 01:08
поделиться

2 ответа

Я думаю, вы должны попробовать что-то вроде этого:

private void setTimeLimit(Object timeLimit) {
  if (Objects.isNull(this.timeLimit)) {
    this.timeLimit = timeLimit;
  }
}

Однако, я рекомендую вам изменить структуру классов, чтобы инициализировать только один раз в первый раз.

0
ответ дан yeahseol 16 January 2019 в 01:08
поделиться

Сеттер не должен заботиться о том, когда и сколько раз он вызывается извне. Если вы не хотите показывать setTimeLimit() вне класса и хотите, чтобы он вызывался только один раз за итерацию, тогда как насчет принятия списка «чего-то», а не одного «чего-то».

т.

public class MyClass {

    public void setSomethings(List<String> somethings) {
        setTimeLimit();
        somethings.forEach(this::setSomething);
    }

    private void setSomething(String something) {
        // ...
    }

    private void setTimeLimit() {
        // ...
    }
}

Таким образом, MyClass получает требуемый элемент управления, не нарушая функциональных отношений между MyClass и его потребителями.

0
ответ дан Adam Bates 16 January 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: