Woy schreef op donderdag 02 juli 2009 @ 10:05:
Is dat een valide constructie in Java? Ik heb nog nooit gezien dat enum members methodes kunnen bevatten. En zijn de enum members dat automatisch een sub-class van het enum type?
Ik ben niet zo bekend met de nieuwe taal-constructies van java, maar ik vind het er een beetje apart uit zien.
edit:
Ik zie dat java enum's gewoon als static readonly members van een "normale" class ( en dus ook van dat type ) geimplementeerd zijn, dus dan maakt het wel aannemelijker dat het idd kan. Ik ben gewend dat een enum alleen een lijst met constanten is, en dus geen methodes kan bevatten

Zo nieuw is enum nou ook weer niet, inmiddels alweer een jaar of 6 denk ik. Juist de uitgebreide mogelijkheden van de enum in Java maakt het een erg mooie taalconstructie: het is niet slechts een opsomming van waarden, maar je kan ook state en behaviour toekennen. Een enum (zoals ik toepaste) is een combinatie van een abstract class met daarin de diverse implementaties (als singletons).
Aangevuld met erop kunnen switchen, EnumSet en nog een aantal dingen die ik vast vergeten ben (ik ben eigenlijk tester en programmeren doe ik meer als ondersteuning voor het testen en als hobby) is het iets dat iedere Java programmeur in zijn toolkit moet hebben.
.oisyn schreef op donderdag 02 juli 2009 @ 10:21:
Creatief

. Ik wist ook niet dat dat kon met die methods op enum members. Wel cool. Gaat op de proton todo list
(Alleen raar dat je Enum.valueOf(Command, value) moet doen ipv Command.valueOf(value), wat me logischer lijkt)
Dat was de methode die ik in de API-documentatie van Enum zag staan, ik heb niet gekeken naar de verdere definitie van enum. Ik heb net even uitgeprobeerd en Command.valueOf(value) werkt ook gewoon. Waarschijnlijk is de Enum.valueOf(class, value) eerder bedoeld voor de iets meer dynamische use cases.
[
Voor 18% gewijzigd door
Remus op 02-07-2009 12:01
]