如果我在一个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 ......等。)
答案 0 :(得分: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
枚举,因为没有办法扩展枚举!
答案 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)
只需将枚举声明为公共顶级枚举类(在其自己的文件中)