方法可以返回具有相同返回类型的另一个方法吗?

时间:2016-02-03 23:57:53

标签: java return return-value return-type

以下是我的双向链接列表(循环)实现中的代码块。

它可以返回一个方法,比如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);    
}

1 个答案:

答案 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();
            }

希望这有帮助