2014-10-19 1 views
0

Java에서 열거 형 변수를 반환 할 수 있습니까? 예를 들어Java에서 enum 유형을 반환하는 get() 메소드를 만드는 방법은 무엇입니까?

:

public static class PhoneContact extends Contact 
{ 
    private String phone; 
    private enum Operator { VIP, ONE, TMOBILE }; 

    public PhoneContact(String date, String phone) 
    { 
     super(date); 
     this.phone = phone; 
    } 

    public String getPhone() 
    { 
     return phone; 
    } 

    public Operator getOperator() 
    { 
     // return Operator; 
    } 
} 

하면 오류 문에이 생산량을 수행 : "운영자 변수에 해결 될 수 없습니다." 누군가이 현상에 대한 설명을 제공 할 수 있으며 미래에 어떻게 그 문제를 해결할 수 있습니까?

미리 감사드립니다.

+1

_enum 유형 변수 란 무엇입니까? 열거 형이 무엇인지 아십니까? 귀환 진술이하는 일을 알고 있습니까? –

답변

0

예; 이 작업을 수행하면됩니다.

public Operator getOperator() 
{ 
    return Operator.VIP; //Or similar. 
} 
4

enum은 클래스에서 비공개가 아니어야합니다. 자체 Operator.java 파일에 자체적으로 있어야합니다. 이렇게하면 반환 할 수 있으며 PhoneContact 클래스 이외의 클래스에서는 의미가 있습니다. 그렇지 않으면 PhoneContact.Operator를 공개하고 참조해야합니다.

Operator.java : 예를 들어,

public PhoneContact.Operator getOperator() { 
    return operator; 
} 

그러나 다시 더는 독립 실행 형 클래스로 만들려면

public enum Operator { 
    VIP, ONE, TMOBILE 
} 

는이 작업을 수행하고, 이것은 이제 컴파일러 이해가됩니다 :

public Operator getOperator() { 
    return operator; 
} 

이렇게하면, pl PhoneContact 클래스가 내부 정적 클래스로 설정된 이유를 알려주세요. PhoneContact가 비 정적 독립 실행 형 클래스로 자체 파일에있는 것이 더 좋지 않습니까?



그리고 소티 리오스 Delimanolis의 의견에 따라, 당신은 운영자 필드를 만들 수 없다 편집
. 따라서

public class PhoneContact extends Contact { 
    private String phone; 
    private Operator operator; 

    public PhoneContact(String date, String phone) 
    { 
     super(date); 
     this.phone = phone; 
    } 

    public String getPhone() 
    { 
     return phone; 
    } 

    public void setOperator(Operator operator) { 
     this.operator = operator; 
    } 

    public Operator getOperator() 
    { 
     return operator; 
    } 
} 
+0

@SotiriosDelimanolis : 좋은 지적입니다! 답변이 수정되었습니다. 감사합니다. 나는 그것을 완전히 놓쳤다. –

관련 문제