如何使get()方法在Java中返回枚举类型?

时间:2014-10-19 22:19:09

标签: java enums

是否可以在Java中返回枚举类型变量?

例如:

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;
    }
}

在错误陈述中执行此操作:"操作员无法解析为变量"。有人可以为这种现象提供解释,以及如何在将来解决这个问题。

提前致谢!

2 个答案:

答案 0 :(得分:4)

你的校友不应该在课堂上私密。它应该在它自己的Operator.java文件中独立存在。这样你就可以返回它,它对PhoneContact类以外的类有意义。否则你必须在里面公开它,并引用它是PhoneContact.Operator。例如,

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

但再好一点,让它成为一个独立的阶层:

Operator.java:

public enum Operator { 
   VIP, ONE, TMOBILE 
}

执行此操作,现在这对编译器有意义:

public Operator getOperator() {
    return operator;
}

说完这些,请告诉我们为什么将PhoneContact类设置为内部静态类。对于PhoneContact来说,将它作为一个非静态的独立类放在自己的文件中会不会更好?


修改
根据Sotirios 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;
    }
}

答案 1 :(得分:0)

是;你只需要这样做:

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