== Auszug aus Jonathan M Davis (jmdavisp...@gmx.com)'s Artikel > On Thursday, March 10, 2011 11:28:04 bearophile wrote: > > useo: > > > is it possible to declare a enum where all entries are instances of a > > > > > class (or struct), like the following: > > I don't think so. Enums are compile-time constants. > > This code doesn't compile: > > > > class A { > > this(uint i) {} > > } > > enum myEnum : A { > > entry1 = new A(0), > > entry2 = new A(1) > > } > > void main() {} > > > > It's important to understand that in D OOP and procedural/C- style features > > are often separated. typedef didn't work well with OOP. Don't mix things > > that are not meant to be mixed. > There's absolutely nothing wrong with mixing enum with OOP. An enum is simply an > enumeration of values. There's absolutely nothing wrong with those values being > of struct or class types. The only restrictions there are problems with the > implementation. TDPL even gives examples of enum structs. They currently work > when you only have one value in the enum, but fail when you have multiple ( > http://d.puremagic.com/issues/show_bug.cgi?id=4423 ). If/When classes work with > CTFE, then you should be able to haveenums of class objects. > There's nothing about enums which are C or procedural-specific. Java has object- > oriented enums which are quite powerful. And aside from the current > implementation issues, D's enums are even more powerful because they allow _any_ > type and so can be either primitive types or user-defined types like you'd have > in Java. > enums don't care one way or another about OOP. They're just a set of values that > have to be ordered and be known at compile time. > - Jonathan M Davis
Okay, thanks - I'll hope the bug will be solved. I'm absolution right here with you, the enumerations of Java are very use- and powerful.