我有一个枚举的ArrayList,但我需要确保只有一个特定的枚举(或任何它的名字).我应该创建一个扩展ArrayList的新类并检查输入吗?我已经看到,也许最好不要(你能用Java扩展ArrayList吗?)但是我看不到更好的方法.
我的枚举
enum myEnum{
SPECIAL,
OTHER1,
OTHER2,//etc
}
Run Code Online (Sandbox Code Playgroud)
使用ArrayList
List<myEnum> list = new ArrayList<>();
list.add(myEnum.SPECIAL);
list.add(myEnum.OTHER1);
list.add(myEnum.SPECIAL);//OH NO!!!
Run Code Online (Sandbox Code Playgroud)
没有ArrayList
class myList extends ArrayList<myEnum> {
@Override
public boolean addAll(int i, Collection<? extends myEnum> clctn) {
if(check()){
super.addAll(i, clctn);
}else{
//do something or throw error;
}
}
@Override
public boolean addAll(Collection<? extends myEnum> clctn) {
if(check()){
super.addAll(clctn);
}else{
//do something or throw error;
}
}
@Override
public void add(int i, myEnum e) {
if(check()){
super.add(i, e);
}else{
//do something or throw error;
}
}
@Override
public boolean add(myEnum e) {
if(check()){
return super.add(e);
}else{
//do something or throw error;
}
}
boolean check(){
//do stuff
}
}
myList list = new myList();
list.add(myEnum.SPECIAL);
list.add(myEnum.OTHER1);
list.add(myEnum.SPECIAL);//something happens or error is thrown
Run Code Online (Sandbox Code Playgroud)
有更好的方法还是可接受的?