Разница между ссылками на классы в Котлине - PullRequest
0 голосов
/ 16 мая 2018

Я обнаружил, что есть (по крайней мере) два способа ссылки на класс в kotlin:

var tempRecipe: RecipeTemplate? = null

и

var tempRecipe2 = RecipeTemplate::class

В чем разница между этими двумя?

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

var tempRecipe: RecipeTemplate? = null означает, что tempRecipe ссылается на объект, который является RecipeTemplate

var tempRecipe2 = RecipeTemplate::class означает, что tempRecipe2 является ссылкой на объект, который является KClass

Поскольку ссылка не совпадает:

На tempRecipe вы можете вызывать все методы, которые есть у RecipeTemplate. На tempRecipe2 вы не можете. Но вы можете вызвать метод cast, например, потому что KClasses имеет этот метод.

0 голосов
/ 16 мая 2018

var tempRecipe: RecipeTemplate? = null Здесь вы создаете переменную, в которой будет храниться ссылка на экземпляр RecipeTemplate, который может иметь значение null.

var tempRecipe2 = RecipeTemplate::class Здесь вы создаете переменную со значением type KClass.

Вышеприведенные два - это то же самое, что и для Java. Первый - это создание varibale для хранения экземпляра типа RecipeTemplate tempRecipe = RecipeTemplate(), а второй - Class tempRecipe2 = RecipeTemplate.class.

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