Вызовите статический инициализатор снова

Вы можете добавить оператор if.

$(function() {
    $("#myVideo").each(function() {
        this.volume = 0.0;
    });
});
$(function() {
    $("#myVideo").click(function() {
        if(this.volume == 0.8){
          this.volume = 0.0;
        }
        else{
          this.volume = 0.8
        }
    });
});

Со встроенным оператором.

$(function() {
    $("#myVideo").each(function() {
        this.volume = 0.0;
    });
});
$(function() {
    $("#myVideo").click(function() {
        (this.volume == 0.8) ? this.volume = 0.0 : this.volume = 0.8
    });
});
5
задан Raedwald 19 January 2016 в 08:28
поделиться

4 ответа

Одно обстоятельство, при котором логика была бы выполнена несколько раз, - то, если класс загружается многократно другим ClassLoaders. Обратите внимание, что в этом экземпляре, они - чрезвычайно различные классы.

Обычно, хотя, это одноразовые соглашения. Если Вы хотите смочь вызвать логику многократно, сделайте, как другие предположили и выразились в статическом методе.

5
ответ дан 18 December 2019 в 08:31
поделиться

Я соглашаюсь с ответом Earwicker. Просто извлеките статическую инициализацию к отдельному статическому методу.

public class Foo {

    static {
        Foo.initialize();
    }

    public static void initialize() {
        System.out.println("bar");
    }

}
4
ответ дан 18 December 2019 в 08:31
поделиться

Поместите код initalisation в отдельный общедоступный статический метод, таким образом, можно назвать его от статического инициализатора и откуда-либо?

10
ответ дан 18 December 2019 в 08:31
поделиться

Вы могли попытаться расширить класс, который содержит статический код и затем вставляет Ваш собственный статический инициализатор. Не совсем уверенный, если это работает, но:

public class OldBadLibraryClass {
   static {
      System.out.println("oldBadLibrary static init");
   }
}

//next file

public class MyBetterClass extends OldBadLibraryClass {
   static {
      System.out.println("MyBetterClass init");
   }
}


public class Test {
   public static void main(String[] args) {
      new MyBetterClass();
   }
}

посмотрите, ожидаете ли вышеупомянутая печать в порядке Вы. На моей машине это работало.

Хотя это - полностью взлом и является довольно хрупким. Действительно было бы намного лучше изменить старый класс, чтобы иметь init () метод, который может быть переопределен.

0
ответ дан 18 December 2019 в 08:31
поделиться
Другие вопросы по тегам:

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