본문 바로가기
자바

열거 형 값을 문자열 리터럴으로 사용합니다

by º기록 2021. 4. 9.
반응형

열거 형에 저장된 값을 문자열 리터럴으로 사용하는 가장 좋은 방법은 무엇입니까? 예 :

public enum Modes {
    some-really-long-string,
    mode1,
    mode2,
    mode3
}

그런 다음 나중에 mode.mode1 를 사용하여 문자열 표현을 mode1 로 되돌릴 수 있습니다. mode.mode1.tostring () 를 호출하지 않고

 

해결 방법

 

너는 할 수 없다.나는 네가 네 가지 옵션을 가지고 있다고 생각한다.네 명 모두는 솔루션을 제공하지만 약간 다른 접근 방식으로 ...

옵션 1 : 열거 형에 내장 된 name () 을 사용하십시오.특별한 이름 지정 형식이 필요하지 않은 경우에는 완벽하게 괜찮습니다.

    String name = Modes.mode1.name(); // Returns the name of this enum constant, exactly as declared in its enum declaration.

옵션 2 : 더 많은 제어를 원하는 경우 열거 형에 대체 속성을 추가하십시오.

public enum Modes {
    mode1 ("Fancy Mode 1"),
    mode2 ("Fancy Mode 2"),
    mode3 ("Fancy Mode 3");

    private final String name;       

    private Modes(String s) {
        name = s;
    }

    public boolean equalsName(String otherName) {
        // (otherName == null) check is not needed because name.equals(null) returns false 
        return name.equals(otherName);
    }

    public String toString() {
       return this.name;
    }
}

옵션 3 : enums 대신 정적 결승전 사용 :

public final class Modes {

    public static final String MODE_1 = "Fancy Mode 1";
    public static final String MODE_2 = "Fancy Mode 2";
    public static final String MODE_3 = "Fancy Mode 3";

    private Modes() { }
}

옵션 4 : 인터페이스 모든 필드, 정적 및 최종 :

public interface Modes {

    String MODE_1 = "Fancy Mode 1";
    String MODE_2 = "Fancy Mode 2";
    String MODE_3 = "Fancy Mode 3";  
}

 

참조 페이지 https://stackoverflow.com/questions/6667243

 

 

반응형

댓글