以下是我的双向链接列表(循环)实现中的代码块。
它可以返回一个方法,比如addBefore方法的return语句吗?
public boolean addAfter(int value, int target) {
Node targetNode = findExact(target);
Node temp = new Node(value);
if(targetNode == null) {
return false;
} else if((targetNode.next == null)) { //prevNode is head, when list.size = 1
temp.next = head;
temp.prev = targetNode;
targetNode.next = temp;
head.prev = temp;
size++;
return true;
} else if(targetNode.next == head) { //prevNode is tail,
temp.next = targetNode.next;
temp.prev = targetNode;
targetNode.next = temp;
head.prev = temp;
size++;
return true;
} else { //prevNode is a node inbetween two nodes
temp.next = targetNode.next;
temp.prev = targetNode;
targetNode.next = temp;
temp.next.prev = temp;
size++;
}
return true;
}
public boolean addBefore(int value, int target) {
Node targetNode = findPrev(target);
return addAfter(value, targetNode.data);
}
答案 0 :(得分:0)
我认为你要声明在addBefore方法的情况下从方法返回一个值,你想要利用addAfter。这个位是有效的,您应该查看底层方法addAfter的语义,并且可能会查看它们返回的导致NPE的内容。
也可以返回一个方法,不要认为你需要它,但是假设有一个名为myMethod的方法,它接受一个整数数组,语法如下所示:
Method myMethod;
try {
myMethod = TestApp.class.getDeclaredMethod("myMethod", int[].class);
myMethod.invoke(null, ar);
} catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
希望这有帮助