2010-07-16 145 views
5

我需要声明一个枚举变量作为类成员,并且需要为类似java bean的定义一个setter和getter。这样的事情 -在Java bean中声明枚举变量

public class Vehicle { 
private String id; 
private String name; 
enum color { 
    RED, GREEN, ANY; 
} 
// setter and getters 
} 

现在,我想设置颜色属性作为红色,绿色或任何由别的类,并希望做出相应的决策。

+0

这不是问题! :) – 2010-07-16 17:52:27

回答

13

枚举必须公开,以被外界可以看出:

public class Vehicle { 
    private String id; 
    private String name; 

    public enum Color { 
     RED, GREEN, ANY; 
    }; 

    private Color color;  

    public Color getColor(){ 
     return color; 
    } 

    public void setColor(Color color){ 
     this.color = color; 
    } 

    } 

然后从包外,你可以这样做:

vehicle.setColor(Vehicle.Color.GREEN); 

如果你只需要在与Vehicle相同的包内使用Vehicle.Color,您可以从enum声明中删除public

+0

猜你擅长枚举用法可以帮助我在这个链接:http://stackoverflow.com/q/14252822/1503130 – Prateek 2013-01-10 09:16:07

2

如果你想使用你的color枚举,你必须比你所做的更广泛地分享它的声明。最简单的可能是将public放在车辆的enum color前面。

接下来,您需要声明枚举类型的字段。我建议你将枚举的名字从color改为Color,因为无论如何它基本上是一个类。然后,您可以在其他字段中声明一个字段:private Color color

要从另一个类使用enum特别是它的常量,您需要知道enum嵌套在Vehicle中。你需要限定所有的名字,所以:

Vehicle.Color myColor = Vehicle.Color.RED; 

Bakkal欣然写代码来说明太多东西我在谈论的。详情请见他的回答!

+0

这是一个他,很高兴认识你:) – bakkal 2010-07-16 17:58:58

+2

我不确定从照片,并不想冒犯你;) – 2010-07-16 18:12:16