我刚才有这个错误。我有这个
private List<String> neighbourNames;
其中包含网络中对等方的名称。当对等方尝试离开网络时,尝试在其他对等方的列表中删除自己。发生了这种情况,但最终我收到了一个错误。这是代码
for(String s : neighbourNames){
try {
stub = (PeerInterface) registry.lookup(s);
} catch (NotBoundException e) {
System.out.println("Cannot reach " + s + ", probably is offline");
}
stub.removeMeFromNetwork(nome,key);
}
错误是标题中显示的错误......
at com.sun.proxy.$Proxy0.removeMeFromNetwork(Unknown Source)
at com.server.PeerNode.leaveNetwork(PeerNode.java:181)
at com.server.PeerNode.printMenu(PeerNode.java:475)
at com.server.PeerNode.run(PeerNode.java:118)
at com.server.Main.main(Main.java:85)
抛出该错误的行是:stub.removeMeFromNetwork(nome,key);
这是removeMeFromNetwork的实现:
public void removeMeFromNetwork(String nome, int ke) throws RemoteException {
System.out.println(nome + " is leaving the network");
neighbourNames.remove(nome);
listKey.remove(ke);
System.out.println("QUALCUNO E' USCITO VICINI RIMANENTI\n"+ neighbourNames);
}
提前致谢
答案 0 :(得分:0)
接口List
有两个remove
方法,一个接受对象(List.remove(Object)
),另一个接受索引号(List.remove(int)
)。当你有一个List<Integer>
时,你必须小心地调用正确的。{/ p>
即,在您的代码中,您有一个参数int ke
并调用listKey.remove(ke);
,它将调用List.remove(int)
并将ke
解释为索引而不是元素。您可以通过插入类型广告Integer
listKey.remove((Integer)ke);
对象