2016-06-18 2 views
1

Ich kann den Unterschied zwischen einer Wertklasse und einer Enumeration nicht sehen. Es wäre großartig, wenn mir jemand den Unterschied zwischen ihnen und dem Unterschied in ihrem Gebrauch sagen könnte.Java: Was ist der Unterschied (auch in Verwendung) zwischen einer Aufzählung und einer Wertklasse?

+2

Was ist Wertklasse – ThiepLV

+2

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

+0

Fragen Sie Google, erhalten Sie weitere Informationen. – LowLevel

Antwort

3

Zunächst ist es keine "Wertklasse". Es ist eine "wertbasierte Klasse". Bitte versuchen Sie die richtige Terminologie zu verwenden.

Der Blog-Eintrag "Value-based Classes" von Nicolai Parlog erklärt ziemlich detailliert, worum es bei all diesen Dingen geht. Im Wesentlichen sind sie ein Vorläufer von "Werttypen", die wahrscheinlich in einer zukünftigen Version von Java hinzugefügt werden. (Wahrscheinlich Java 10 - siehe Project Valhalla.)

Der Hauptgrund, dass enum Typen (im Allgemeinen) keine wertebasierten Klassen sind, ist, dass sie nicht unbedingt unveränderbar sind. Unveränderlichkeit ist eine der wichtigsten Voraussetzungen für eine Klasse, um wertorientiert zu sein. (Es gibt andere Aspekte von enums, die nicht ganz mit den Anforderungen übereinstimmen, aber die spezielle Art der enum-Werte bedeutet wahrscheinlich, dass diese keine Rolle spielen würden.)

Im Moment hat das Merkmal "wertbasierte Klasse" keine direkte Verwendung. Aber es kann in einer zukünftigen Version von Java tun.

+0

Wenn also ein ENUM unveränderlich ist, sollte es sich wie eine wertebasierte Klasse verhalten? – Sander

+1

Ziemlich viel. Vergleichen Sie die Anforderungen und Eigenschaften einer Enum-Klasse. (Du entscheidest ...) –

Verwandte Themen