Java 在方法调用上引发异常

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

如何在方法上抛出和取消支持OperationException?因此,如果我有一个Iterable对象,并且我试图禁止该对象的remove方法

在下面的方法中,我将返回一个iterable对象,需要通过抛出UnsupportedErrorException禁用其迭代器的remove。我可以在方法体中这样做吗?或者如何做到

  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!”);
}
};
}
};

抛出新的不支持操作异常()