Java 在方法调用上引发异常
如何在方法上抛出和取消支持OperationException?因此,如果我有一个Iterable对象,并且我试图禁止该对象的remove方法 在下面的方法中,我将返回一个iterable对象,需要通过抛出UnsupportedErrorException禁用其迭代器的remove。我可以在方法体中这样做吗?或者如何做到Java 在方法调用上引发异常,java,exception,error-handling,throws,Java,Exception,Error Handling,Throws,如何在方法上抛出和取消支持OperationException?因此,如果我有一个Iterable对象,并且我试图禁止该对象的remove方法 在下面的方法中,我将返回一个iterable对象,需要通过抛出UnsupportedErrorException禁用其迭代器的remove。我可以在方法体中这样做吗?或者如何做到 public Iterable<String> getInNodes (String destinationNodeName) { if (!hasNod
public Iterable<String> getInNodes (String destinationNodeName) {
if (!hasNode(destinationNodeName))
return emptySetOfString;
else {
for(String e : nodeMap.get(destinationNodeName).inNodes)
{
emptySetOfString.add(e);
}
return emptySetOfString;
}
}
public Iterable getInNodes(字符串destinationNodeName){
如果(!hasNode(destinationNodeName))
返回清空字符串;
否则{
for(字符串e:nodeMap.get(destinationNodeName.inNodes)
{
清空字符串。添加(e);
}
返回清空字符串;
}
}
试试这个
@Override
public void remove() {
throw new UnsupportedOperationException();
}
在类中,您只需@Override原始方法
public class myIterable extends Iterable {
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
然后创建此类的对象,而不是原始Iterable。您也可以尝试使用适当的消息抛出消息:
public void remove() {
throw new UnsupportedOperationException("Remove is unsupported on this object");
}
我可能误解了你的问题 如果您有一个普通的Iterable,并且希望将其转换为一个生成迭代器的Iterable,在该迭代器上不能调用
remove
,则可以使用匿名子类化实现的这种畸形:
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!");
}
};
}
};
Iterable Iterable=//您已经拥有的普通Iterable。。。
Iterable noremovieteratorgeneratingIterable=新的Iterable(){
@凌驾
公共迭代器迭代器(){
返回新的迭代器(){
迭代器internalIterator=iterable.Iterator();
@凌驾
公共布尔hasNext(){
返回internalIterator.hasNext();
}
@凌驾
公共字符串next(){
返回internalIterator.next();
}
@凌驾
公共空间删除(){
抛出新的UnsupportedOperationException(“no!”);
}
};
}
};
抛出新的不支持操作异常()
?