类中的枚举助手(java)

时间:2012-05-19 16:15:34

标签: java enums

如果我在一个Java类中有一个Enum作为帮助器,那么有没有办法在它所帮助的类之外引用那个Enum?

基本上,我所拥有的是:

class Account extends MyClass {
    HashMap<Property, String> property = new HashMap<Property, String>();
    public Account() {
    }

    public enum Property {
        USERID,
        PASSWORD;
    }
}

我希望能够访问Account类之外的Property枚举。 我想这样做的原因是因为这是另一个的子类,我希望能够访问给定子类的属性而不引用唯一的枚举名称(即:没有引用每个名称,例如, AccountProperty或ResearchProperty或TaskProperty ......等。)

3 个答案:

答案 0 :(得分:3)

您的枚举是公开的,因此您可以使用Account.PropertyAccount

之外访问它

编辑:

如果我得到了你需要的东西,你会想做类似

的事情
Property p = Account.Property.PASSWORD;
Property p1 = Product.Property.CODE;

产品

public class Product extends MyClass{
    HashMap<Account.Property, String> property = new HashMap<>();
    public Product() {
    }

    public static enum Property {
        CODE,
        PRICE;
    }
}

并且您希望在MyClass

中执行此操作

问题是这两行都需要导入,你不能导入两个具有相同名称的类,所以唯一的解决办法是做这样的事情

Account.Property p = Account.Property.PASSWORD;
Product.Property p1 = Product.Property.CODE;

我猜你必须处理instanceof为每个班级使用正确的Property枚举,因为没有办法扩展枚举!

答案 1 :(得分:1)

可能类似以下(但没有类型检查):

import java.util.*;
abstract class MyClass {
    Map<Object,String> properties=new HashMap<Object,String>();
}
class Account extends MyClass {
    enum Property {
        userid,password
    }
    //static Set<Property> keys=EnumSet.allOf(Property.class);
}
class Research extends MyClass {
    enum Property {
        red,green;
    }
    static Set<Property> keys=EnumSet.allOf(Property.class);
}
public class So10666881 {
    public static void main(String[] args) {
        Account account=new Account();
        account.properties.put(Account.Property.userid,"user");
        account.properties.put(Account.Property.password,"pass");
        for(Account.Property property:Account.Property.values())
            System.out.println(property+"="+account.properties.get(property));
    }
}

答案 2 :(得分:0)

只需将枚举声明为公共顶级枚举类(在其自己的文件中)