2009-12-10 26 views
37

Olası Çoğalt:
add values to enumJava enum miras

Neden Java çeteleler diğer çeteleler devralamaz? Bu neden böyle uygulandı?

+0

http://stackoverflow.com/questions/55375/add-values-to-enum –

+3

Soruyu yeniden hatırlatırım. Enemlerin neden soyut bir temeli olamaz? Bill tarafından alıntılanan soruya verilen yanıtın cevabı, enilleri neden başka değerlerle genişletemeyeceğinizi açıklıyor, ancak neden bir temel uygulamayı paylaşamayacakları açık değil. –

cevap

78

Example stolen from here

bir enum öğe ekleyebilen etkili süper sınıf değil, bir alt sınıf yaratacak çünkü.

düşünün:

enum First {One, Two} 
enum Second extends First {Three, Four} 

First a = Second.Four; // clearly illegal 
Second a = First.One; // should work 

Bu normal sınıflar ile çalışır o şekilde tersidir. Sanırım bu şekilde uygulanabiliyordu ama , 'u uygulamaktan daha karmaşık olurdu ve kesinlikle insanları şaşırtıyor.

+2

Muhtemelen ne istiyorsun İlk uygular Arayüzüm İkinci uygular Arayüzüm Sonra = Second.One yasadışı deyimi İlk iki grup – user1176505

+2

misiniz birliği için MyInterface kullanılır? –

+0

@TimothySwan Başvurulan kod derlenmeyecektir, çünkü bir istisna Enum İkinci uzanır İlk {Three, Four} satırında atılacaktır. –