1

如果我在 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... 等)。

4

3 回答 3

3

您的枚举是公开的,因此您可以使用Account.Property它从Account课堂外访问它

编辑 :

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

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枚举,因为没有办法扩展枚举!

于 2012-05-19T16:17:19.720 回答
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));
    }
}
于 2012-05-19T17:18:25.350 回答
0

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

于 2012-05-19T16:16:32.047 回答