Кілт ретінде бірдей атаумен enum мәнін қалай алуға болады?

Менде келесідей әңгімелер бар:

private static enum CD1 { CC, COR, PO };
private static enum CD2 { OMA, PBO, VAR };
private static enum CD3  { USD, EUR, GBP };
private static enum CD4  { IR, CD, COT };

CD1.CC деп айтқан кезде, мен CC емес, 0 деп айтқым келеді;

Мен әр конструкторға конструктор қойғым келмейді және мәнді қайтару үшін String-ге көшіруді қаламаймын;

private static enum CD1 { 
 CC("CC"), COR("COR"), PO("PO") ; 
 private String val;

 CD1(String val); this.val = val;

 public String toString() {
  return val;
 }

Оны генерациялаудың тәсілі бар ма, сондықтан әр конструктор үшін конструктор жазудың қажеті жоқ па?

EDIT:

EnumVal.name() пайдаланудан аулақ болу тәсілі бар ма? Мен тек enum.enumVal пайдалануды жоспарлап отырмын. Бірақ, мұны мүмкін бе деп сұрады. Өкінішке орай, мәселеде анық болмады.

4
«Мен тек enum.enumVal пайдалануды жоспарлап отырмын» деген сөзді түсіндіре аласыз ба?
қосылды автор Puce, көзі
«Мен тек enum.enumVal пайдалануды жоспарлап отырмын» деген сөзді түсіндіре аласыз ба?
қосылды автор Puce, көзі
«Мен тек enum.enumVal пайдалануды жоспарлап отырмын» деген сөзді түсіндіре аласыз ба?
қосылды автор Puce, көзі
@BheshGurung Иә, toString() функциясын елемеудің қажеті жоқ. Бұл менің қадағалауым және мүмкін жаман мәселе. Жауапыңызға рахмет.
қосылды автор would_like_to_be_anon, көзі
Қажет болғаныңыз үшін toString() әдісі. Құжаттар: Бұл enum constant атауын қайтарады ... .
қосылды автор Bhesh Gurung, көзі
Қажет болғаныңыз үшін toString() әдісі. Құжаттар: Бұл enum constant атауын қайтарады ... .
қосылды автор Bhesh Gurung, көзі
Қажет болғаныңыз үшін toString() әдісі. Құжаттар: Бұл enum constant атауын қайтарады ... .
қосылды автор Bhesh Gurung, көзі
Мен екеуінің арасында ешқандай айырмашылықты көрмеймін. Әңгімелердің қысқаша нұсқалары ұзақ нұсқалармен бірдей болуы керек. Сіз қандай айырмашылықты байқайсыз? FYI, toString() ішінен name() кодын қайтару немесе name() пайдалану арқылы дәл сол нәтижеге ие болады.
қосылды автор John B, көзі
Мен екеуінің арасында ешқандай айырмашылықты көрмеймін. Әңгімелердің қысқаша нұсқалары ұзақ нұсқалармен бірдей болуы керек. Сіз қандай айырмашылықты байқайсыз? FYI, toString() ішінен name() кодын қайтару немесе name() пайдалану арқылы дәл сол нәтижеге ие болады.
қосылды автор John B, көзі

8 жауаптар

пайдалану

enumVal.name()

Бұл Java анимацияларына негізделген

2
қосылды
EnumVal.name() пайдаланудан аулақ болу тәсілі бар ма? Мен тек enum.enumVal пайдалануды жоспарлап отырмын. Бірақ, мұны мүмкін бе деп сұрады. Өкінішке орай, мәселеде анық болмады. Мен өз сұрағымды жаңартамын.
қосылды автор would_like_to_be_anon, көзі

пайдалану

enumVal.name()

Бұл Java анимацияларына негізделген

2
қосылды
EnumVal.name() пайдаланудан аулақ болу тәсілі бар ма? Мен тек enum.enumVal пайдалануды жоспарлап отырмын. Бірақ, мұны мүмкін бе деп сұрады. Өкінішке орай, мәселеде анық болмады. Мен өз сұрағымды жаңартамын.
қосылды автор would_like_to_be_anon, көзі

пайдалану

enumVal.name()

Бұл Java анимацияларына негізделген

2
қосылды
EnumVal.name() пайдаланудан аулақ болу тәсілі бар ма? Мен тек enum.enumVal пайдалануды жоспарлап отырмын. Бірақ, мұны мүмкін бе деп сұрады. Өкінішке орай, мәселеде анық болмады. Мен өз сұрағымды жаңартамын.
қосылды автор would_like_to_be_anon, көзі

Басқалар айтқандай, сіз name() әдісін қолданып, enum constant үшін қолданғыңыз келген затбелгіні ала аласыз.

name() белгісін қайтару үшін арналған. Бұл әдіс осы ұсынуға байланысты бағдарламалар мен қолданбаларда пайдалануға арналған.

toString() бағдарламаны бағдарламалаушылардың ақпараттың «соңғы пайдаланушысына» тиісті түрде көрсетуін болдырмау үшін қолдануға арналған.

Маған аты() функциясын қолданғыңыз келеді.

0
қосылды

Басқалар айтқандай, сіз name() әдісін қолданып, enum constant үшін қолданғыңыз келген затбелгіні ала аласыз.

name() белгісін қайтару үшін арналған. Бұл әдіс осы ұсынуға байланысты бағдарламалар мен қолданбаларда пайдалануға арналған.

toString() бағдарламаны бағдарламалаушылардың ақпараттың «соңғы пайдаланушысына» тиісті түрде көрсетуін болдырмау үшін қолдануға арналған.

Маған аты() функциясын қолданғыңыз келеді.

0
қосылды

Enum.name() әдісін немесе тікелей println() әдісін қолдануға болады.

System.out.println(CD1.COR);//prints: COR

If you wouldn't like to call name() explicitly; just override toString()
Just dug into the source code; turns out it's the default behaviour (as pointed by @Puce)

public final String name() {
    return name;
}

public String toString() {
    return name;
}

айырмашылығы name() болмауы мүмкін.

0
қосылды
Бұл әдепкі мінез-құлық.
қосылды автор Puce, көзі

Enum.name() әдісін немесе тікелей println() әдісін қолдануға болады.

System.out.println(CD1.COR);//prints: COR

If you wouldn't like to call name() explicitly; just override toString()
Just dug into the source code; turns out it's the default behaviour (as pointed by @Puce)

public final String name() {
    return name;
}

public String toString() {
    return name;
}

айырмашылығы name() болмауы мүмкін.

0
қосылды
Бұл әдепкі мінез-құлық.
қосылды автор Puce, көзі

Enum.name() әдісін немесе тікелей println() әдісін қолдануға болады.

System.out.println(CD1.COR);//prints: COR

If you wouldn't like to call name() explicitly; just override toString()
Just dug into the source code; turns out it's the default behaviour (as pointed by @Puce)

public final String name() {
    return name;
}

public String toString() {
    return name;
}

айырмашылығы name() болмауы мүмкін.

0
қосылды
Бұл әдепкі мінез-құлық.
қосылды автор Puce, көзі