Статические данные в Котлине

Возможно, это работает?

.complete(function(response, status) {
    if (response.status == "404")
        alert("404 Error");
    else{
        //Do something
    }   
    if(status == "error")
        alert("Error");
    else{
        //Do something
    }
});

Я не знаю, когда состояние переходит в режим «ошибка». Но я тестировал его с 404, и он ответил

24
задан hotkey 27 May 2016 в 14:03
поделиться

1 ответ

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

В Kotlin 1.0.2 скомпилированный байт-код показывает, что свойство

  1. val в object или companion object скомпилировано в поле private static final внутри класса:

     // access flags 0x1A
     private final static I FILES_TO_DOWNLOAD = 100
    

    и геттер, который вызывается при обращении к свойству:

     // access flags 0x1019
     public final static synthetic access$getFILES_TO_DOWNLOAD$cp()I
    

    Из Java геттер может называться DefaultValues.INSTANCE.getFILES_TO_DOWNLOAD() или DefaultValues.Companion.getFILES_TO_DOWNLOAD() соответственно.

  2. Свойство верхнего уровня, не относящегося к const, компилируется в то же самое в (1) с той лишь разницей, что поле и геттер теперь помещены в класс FilenameKt.

    Но верхний уровень const val компилируется в поле public static final:

    // access flags 0x19
    public final static I DEFAULT_FILES_TO_DOWNLOAD = 100
    

    Такое же общедоступное статическое конечное поле будет создано, когда const val объявлено внутри объекта. Кроме того, вы можете получить тот же результирующий байт-код, если добавите аннотацию @JvmField к свойствам, объявленным в (1) .


Таким образом, вы можете определить поле public static final, используя const или @JvmField, либо в object, либо на верхнем уровне.

26
ответ дан Community 27 May 2016 в 14:03
поделиться
Другие вопросы по тегам:

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