2013-03-24 100 views
0

我正在看一个简单的Enum示例来尝试和刷新我的技能,我注意到至少通过一个红旗为我的东西,因为我不明白为什么它被允许。访问私有成员的枚举变量?

这里是枚举的副本我一直在寻找:

public enum GameDuration { 
    Short("30"), Medium("45"), Long("60"); 

    private GameDuration(String minutes) { 
     this.minutes = minutes; 
    } 

    private String minutes; 

    public String getMinutes() { 
     return this.minutes; 
    } 

    public static GameDuration fromMinutes(String minutes) { 
     if (minutes != null) { 
      for (GameDuration g : GameDuration.values()) { 
       if (minutes.equalsIgnoreCase(g.minutes)) { 
        return g; 
       } 
      } 
     } 
     return null; 
    } 
} 

我不明白的部分是在fromMinutes方法和粘贴下面:

if (minutes.equalsIgnoreCase(g.minutes)) { 

分钟enum中的字段被标记为私有的,那么如何直接从变量g中访问?

感谢

回答

1

方法fromMinutes(...)位于GameDuration类的内部,因此私有变量和类的方法来访问它。

+1

哦,我没有注意到......对不起,这很晚了。 :)即使它是静态的? – 2013-03-24 05:05:11

+0

@JanTacci:即使它是静态的(因为你的编译器已经告诉你了)。 – 2013-03-24 05:05:40

+0

K明白了,我应该早点注意到:) – 2013-03-24 05:07:36