Search the web
Sign In
New User? Sign Up
java_maniacs · JManiacs
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Message search is now enhanced, find messages faster. Take it for a spin.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
Enum extends?   Message List  
Reply | Forward Message #1128 of 1171 |
Re: [JManiacs] Enum extends?

Ето примерно решение, тенденциозно доближено до основната функционалност на
enum:

public class ExtensibleEnum {

private java.util.Map<String, Enum> mValues = new
java.util.LinkedHashMap<String,
Enum>();

public ExtensibleEnum(final Enum[] ... pEnums) {
for (final Enum[] iEnum : pEnums) {
for (final Enum e : iEnum) {
if (mValues.put(e.name(), e) != null) {
throw new RuntimeException(e.name() + " already exists.");
}
}
}
}

public Enum get(final String pName) {
return mValues.get(pName);
}

public Enum[] values() {
return mValues.values().toArray(new Enum[mValues.size()]);
}

public Enum valueOf(final Class pEnumType, final String pName) {
final Enum ret = get(pName);

if (! ret.getClass().equals(pEnumType)) {
throw new IllegalArgumentException();
}

return ret;
}
}

Ето как бих направил две псевдо изброявания на числата от 1 до 19 и от 1 до 29:

public class ExtensibleEnumDemo {

enum E1_9 {
ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE
}

enum E10_19 {
TEN, ELEVEN, TWELVE, THIRTEEN, FOURTEEN, FIFTEEN, SIXTEEN, SEVENTEEN,
EIGHTEEN,
NINETEEN
}

enum E20_29 {
TWENTY, TWENTYONE, TWENTYTWO, TWENTYTHREE, TWENTYFOUR, TWENTYFIVE, TWENTYSIX,
TWENTYSEVEN, TWENTYEIGHT, TWENTYNINE
}

static class E1_19 {
private final static ExtensibleEnum smTheEnum = new
ExtensibleEnum(E1_9.values(),
E10_19.values());

public static Enum[] values() {
return smTheEnum.values();
}
}

static class E1_29 {
private final static ExtensibleEnum smTheEnum = new
ExtensibleEnum(E1_9.values(),
E10_19.values(), E20_29.values());

public static Enum[] values() {
return smTheEnum.values();
}

public static Enum valueOf(final Class pEnumType, final String pName) {
return smTheEnum.valueOf(pEnumType, pName);
}
}

public static void main(String[] args) {
demo(E1_9.values());
demo(E10_19.values());
demo(E20_29.values());
demo(E1_19.values());
demo(E1_29.values());

System.out.println(E1_29.valueOf(E10_19.class, E10_19.NINETEEN.name()));
System.out.println(E1_29.valueOf(E1_19.class, E10_19.NINETEEN.name())); //
Error
}

static void demo(final Enum[] pEnum) {
for (final Enum e : pEnum) {
System.out.println(e + ", name()=" + e.name() + ", ordinal()=" +
e.ordinal());
}

System.out.println("--------------------------------------");
}
}


Vladislav Doshev (VladiSD)
ICQ #16292897



________________________________________________________________________________\
____
Tonight's top picks. What will you watch tonight? Preview the hottest shows on
Yahoo! TV.
http://tv.yahoo.com/




Thu Oct 4, 2007 8:01 pm

vladisd
Offline Offline
Send Email Send Email

Forward
Message #1128 of 1171 |
Expand Messages Author Sort by Date

&#1047;&#1076;&#1088;&#1072;&#1074;&#1077;&#1081;&#1090;&#1077; Java &#1084;&#1072;&#1085;&#1080;&#1103;&#1094;&#1080;, &#1050;&#1072;&#1082;&#1090;&#1086;...
Vladislav Doshev
vladisd
Offline Send Email
Oct 4, 2007
9:15 am

Vladi, da, prav si i osnovnata prichina za tova e che enums sa specialni klasove koito naslediavat java.lang.Enum i kakto znaesh v Java ne mojesh da...
Stanley Stanev
stanley_stanev
Offline Send Email
Oct 4, 2007
2:58 pm

Ето примерно решение, тенденциозно доближено до основната функционалност на enum: public...
Vladislav Doshev
vladisd
Offline Send Email
Oct 4, 2007
8:01 pm
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help