Сколько стоит кастинг в Котлине? - PullRequest
0 голосов
/ 12 сентября 2018

В Котлине, как дорого стоит кастинг классов?

Так, например, давайте иметь следующий Test класс

open class Test {
    open fun question() = "Basic question"
}

и 3 наследующих класса

class MathTest : Test() {
    override fun question() = "2+2=?"
}

class EnglishTest : Test() {
    override fun question() = "Who created SO?"
}

class HistoryTest: Test() {
    override fun question() = "When was SO created?"
}

Насколько дорого будет стоить (например, скажем) 100 Test объектов к одному из этих 3 во время выполнения в Android (и вообще)?

1 Ответ

0 голосов
/ 12 сентября 2018

Я немного повозился с разборкой сгенерированного байт-кода, и, за исключением одного случая, приведение идентично Java.Единственный случай, когда кажется, что он отличается, - это использование оператора безопасного приведения , as?, например, так:

val thing = "" as? Int

Это генерирует эквивалентный байт-код для этого кода Java:

String _temp = "";
if (!(_temp instanceof Integer)) {
    _temp = null;
}
Integer thing = (Integer) _temp;

Это делает его немного дороже, чем обычное приведение в Java.Тем не менее, в Java нет прямого эквивалента этому поведению, если не считать аналогичного оператора if, так что я думаю, можно с уверенностью сказать, что приведение в Kotlin не дороже, чем приведение в Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...