Он не скомпилирован в объект, если вы не используете его в обнуляемом или обобщенном c контексте. Если вы это сделаете, он будет обернут в объект так же, как это делают примитивы.
Но toString()
и другие функции и свойства по-прежнему доступны для использования, как если бы это был класс, так же, как и для примитивы. Я не знаю точного механизма в скомпилированном коде, но я предполагаю, что они реализованы так же, как и функции расширения (которые в JVM компилируются как методы stati c с «получателем» в качестве другого аргумента).
С вашей точки зрения, вы по-прежнему относитесь к нему точно так же, как к любому из примитивных классов, которые имеют версии-оболочки для случаев, когда они обнуляются или используются в качестве обобщенных. Но у вас есть дополнительное преимущество: вы можете переопределять toString()
и добавлять функции без использования расширений.