Есть ли разница между Единицей в Котлине и лишенной Java? [Дубликат]

Что бы вы ни делали, чтобы защитить секретные ключи, это не будет реальным решением. Если разработчик может декомпилировать приложение, нет способа защитить ключ, скрывая ключ, это просто защита от неизвестности, а также обфускация кода. Проблема с обеспечением секретного ключа заключается в том, что для его защиты вам нужно использовать другой ключ, и этот ключ также должен быть защищен. Подумайте о ключе, спрятанном в ящике, который заблокирован ключом. Вы помещаете коробку внутри комнаты и запираете комнату. У вас остается другой ключ для обеспечения безопасности. И этот ключ все еще будет жестко закодирован внутри вашего приложения.

Поэтому, если пользователь не вводит ПИН или фразу, нет способа скрыть ключ. Но для этого вам нужно будет иметь схему управления PIN-кодом, происходящим вне диапазона, а это означает, что с помощью другого канала. Конечно, это не практично для обеспечения ключей для таких сервисов, как API Google.

43
задан MajesticRa 26 March 2014 в 10:12
поделиться

3 ответа

Цель такая же, как у C или Java void. Только Unit является подходящим типом, поэтому его можно передать как общий аргумент и т. Д.

  1. Почему мы его не называем «Пустота»: потому что слово «пустота» означает «ничего», и есть другой тип Nothing, что означает просто «никакого значения вообще», т. е. вычисление не завершилось нормально (зацикливание навсегда или исключение). Мы не могли позволить себе столкновение значений.
  2. Почему Unit имеет значение (т. Е. Не то же самое, что и Nothing): потому что общий код может работать плавно. Если вы передадите Unit для общего параметра T, код, написанный для любого T, будет ожидать объект, и должен быть объект, единственное значение Unit.
  3. Как получить доступ к этому значению Unit: поскольку это одноэлементный объект, просто скажите Unit
89
ответ дан Andrey Breslav 31 August 2018 в 20:35
поделиться

Основная причина, по которой подразделение существует, объясняется общими причинами. Давайте используем этот пример из документов Kotlin.

class Box<T>(t: T) {
    var value = t
}

Мы можем иметь

var box = Box(Unit)

. Именно поэтому Unit возвращает значение, поэтому Kotlin может вывести его из типа, переданного в инициализация класса. Разумеется, вы также можете явно записать его следующим образом:

var box = Box<Unit>(Unit)

, но все равно он должен иметь возвращаемое значение. Теперь ключевым словом void в Java в Котлине является Nothing . Ничто - это последний, но один тип иерархии типов в Котлине, последний из которых является Nothing? (Nullable Nothing). Это не возвращает никакой ценности. Поскольку он не возвращает никакого значения вообще, мы не можем передать его как тип в приведенном выше коде.

var box = Box(Nothing) //This will return an Error
10
ответ дан Alf Moh 31 August 2018 в 20:35
поделиться

UNIT на самом деле содержит ценную информацию, в основном это означает «СОВЕРШЕННО». Он просто возвращает информацию вызывающему, что метод закончен. Это реальная информация, поэтому ее можно рассматривать как возвращаемое значение метода .

1
ответ дан spyro 31 August 2018 в 20:35
поделиться
Другие вопросы по тегам:

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