如何在方法上抛出和UnsupportedOperationException?所以,如果我有一个Iterable对象,并且我试图禁止该对象的remove方法。
在下面的方法中,我将返回一个可迭代对象,其迭代器的删除需要通过抛出UnsupportedErrorException来禁用。我可以在方法体内做到这一点或如何做到这一点?
public Iterable<String> getInNodes (String destinationNodeName) {
if (!hasNode(destinationNodeName))
return emptySetOfString;
else {
for(String e : nodeMap.get(destinationNodeName).inNodes)
{
emptySetOfString.add(e);
}
return emptySetOfString;
}
}
答案 0 :(得分:5)
试试这个。
@Override
public void remove() {
throw new UnsupportedOperationException();
}
答案 1 :(得分:2)
我可能误解了你的问题。
如果你有一个普通的Iterable,并且你想将它转换为生成无法调用remove
的迭代器的Iterable,你可以使用匿名子类化实现的这种怪异:
Iterable<String> iterable = // normal Iterable<String> you already have...
Iterable<String> noRemoveIteratorGeneratingIterable = new Iterable<String>() {
@Override
public Iterator<String> iterator() {
return new Iterator<String>() {
Iterator<String> internalIterator = iterable.iterator();
@Override
public boolean hasNext() {
return internalIterator.hasNext();
}
@Override
public String next() {
return internalIterator.next();
}
@Override
public void remove() {
throw new UnsupportedOperationException("Nope!");
}
};
}
};
答案 2 :(得分:0)
在课堂上你可以@Override原始方法
public class myIterable extends Iterable {
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
然后创建此类的对象而不是原始的Iterable。
答案 3 :(得分:0)
您也可以尝试使用相应的消息抛出消息:
public void remove() {
throw new UnsupportedOperationException("Remove is unsupported on this object");
}