从它们之前的方法继承数据类型的方法?

时间:2014-05-26 18:02:20

标签: java methods return inherited

我想知道如何获取方法的返回值,并在另一个方法中直接使用它。例如,假设我这样做了:

public Integer multiply(Integer n1, Integer n2){
    return n1 * n2;
}

//I know this is wrong but I don't know what params to put
public Integer add(Integer n1, Integer n2){
    return n1 + n2;
}

multiply(2, 2).add(???????);

在这里我想最终使用乘法方法中的4作为值,然后使用add方法将我给它的任何值添加到乘法的结果中,即4。

注意:我知道我能做到:

add(multiply(2, 2), 3);

但我想知道如何使用这种格式。

我想要完成的是:

Integer i = multiply(2, 2).add(5);
System.out.print(i);

到我运行的时候输出将是9,因为2 * 2 = 4 + 5 = 9.请向我解释一下:)

2 个答案:

答案 0 :(得分:2)

返回对包含最终值的类的引用,并使用作为参数传递的操作数对其执行操作(请参阅Method cascadingMethod chaining),类似:

public class ALU {

    Integer value = 0;

    ALU mutiply(Integer i1, Integer i2) {
        value = i1.intValue() * i2.intValue();
        return this;
    }

    ALU mutiply(Integer i) {
        value *= i.intValue();
        return this;
    }

    ALU add(Integer i) {
        value += i.intValue();
        return this;
    }

    ALU add(Integer i1, Integer i2) {
        value = i1.intValue() + i2.intValue();
        return this;
    }

    @Override
    public String toString() {
        return Integer.toString(value);
    }

    public static void main(String... args) {
        System.out.println(new ALU().mutiply(2, 2).add(5));
    }
}

输出为9

答案 1 :(得分:0)

Integer i = multiply(2, 2).add(5);
System.out.print(i);

这时你做

 multiply(2, 2) 

它返回一个integer并使用该返回类型Integer,你试图调用`add()方法。

但在add() method课程中Integer不可用,无论你想要签名和打算做什么。

所以抱怨add()Integer内没有multiple(2,2)

所以为了实现它,让add()返回你自己的类并产生结果。

然后以您希望的方式轻松地使用该对象调用package com.kb; public class MultipleMethodCalls { int result; static MultipleMethodCalls m = new MultipleMethodCalls(); public static void main(String[] args) { System.out.println(m.multiply(2, 2).add(3)); } public MultipleMethodCalls multiply(Integer n1, Integer n2){ m.result= n1 * n2; return m; } //I know this is wrong but I don't know what params to put public Integer add(Integer n1){ return this.result + n1; } } 方法。

如何实现同样的方式如下

{{1}}