2016-06-18 3 views
1

Я не вижу разницы между классом значений и перечислением. Было бы здорово, если бы кто-то мог сказать мне разницу между ними и какова разница в их использовании.Java: В чем разница (также в использовании) между перечислением и классом значений?

+2

Что такое класс ценности – ThiepLV

+2

https://docs.oracle.com/javase/8/docs/api/java/lang/doc-files/ValueBased.html – Sander

+0

Задать вопрос Google, получить дополнительную информацию. – LowLevel

ответ

3

Прежде всего, это не «класс ценности». Это «класс, основанный на ценности». Попробуйте использовать правильную терминологию.

Запись в блоге Николая Парлога "Value-based Classes" подробно объясняет, что это такое. По сути, они являются предшественниками «типов ценности», которые, вероятно, будут добавлены в будущую версию Java. (Вероятно, Java 10 - см. Project Valhalla.)

Основная причина, по которой типы enum (в общем) не основаны на значении, заключается в том, что они не обязательно неизменяемы. Неизменность является одним из ключевых требований к классу, основанному на ценности. (Есть другие аспекты перечислений, которые не совсем соответствуют требованиям, но особый характер значений перечисления, вероятно, означает, что это не имеет значения.)

Прямо сейчас, характеристика класса, основанная на значении, имеет нет прямой использования. Но это может произойти в будущей версии Java.

+0

Итак, если ENUM неизменен, он должен вести себя как класс, основанный на значении? – Sander

+1

В значительной степени так. Сравните требования и свойства класса enum. (Ты будешь судьей ...) –