当前位置: 首页 > 知识库问答 >
问题:

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

谢俊力
2023-03-14

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

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作为一个值,然后使用加法方法将我给它的任何值加到乘法结果4上。

注意:我知道我可以做到:

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

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

我想完成的是:

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

当我运行它时,输出将是 9,因为 2 * 2 = 4 5 = 9。请向我解释一下:)

共有2个答案

赫连越
2023-03-14
Integer i = multiply(2, 2).add(5);
System.out.print(i);

当你做的时候

 multiply(2, 2) 

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

但是< code>add()方法在< code>Integer类中是不可用的,无论您尝试的签名和意图是什么。

所以它抱怨 add() 在整数类中不可用。

因此,要实现这一点,请让< code>multiple(2,2)返回您自己的类,并在其中包含一个结果。

然后以您想要方式使用该对象轻松调用< code>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;
    }


}
裴存
2023-03-14

返回对持有最终值的类的引用,并使用作为参数传递的操作数对其执行操作(请参见方法级联和方法链接),类似于:

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

 类似资料:
  • 我想用PHP在我的简单ORM中实现一个钩子系统: 这会导致一个致命错误: 致命错误:调用私人方法付款::before_save()从上下文'记录'中 有道理。 我可以将范围更改为public,但这似乎很难看:在保存()之前,除了支付之外,没有人与

  • 我有一个典型的问题,什么是更好的,我认为答案总是视情况而定,但我还是想澄清一下。所以有两种方法: 逻辑是: 我知道由于类型擦除,方法签名存在冲突,所以我的问题不是“为什么我不能同时拥有这两个方法?”,而是“你会选择哪种方法?”。

  • 问题内容: 我有两个课,和。它们看起来像这样: 此错误指向Field的: 我希望首先调用Background init ()。要将“ a,b”传递给Fields的 init (),Field会分配a和b,然后将其中包含三个0的列表分配给field。然后让Background的 init ()继续,然后调用它自己的buildField()并用包含c的列表覆盖self.field。 似乎我还没有完全理

  • 本文向大家介绍Javascript中类式继承和原型式继承的实现方法和区别之处,包括了Javascript中类式继承和原型式继承的实现方法和区别之处的使用技巧和注意事项,需要的朋友参考一下 在所有面向对象的编程中,继承是一个重要的话题。一般说来,在设计类的时候,我们希望能减少重复性的代码,并且尽量弱化对象间的耦合(让一个类继承另一个类可能会导致二者产生强耦合)。关于“解耦”是程序设计中另一个重要的话

  • 如何/可以重写来自非继承类的方法?其次,有没有比“非继承类”更好的术语? 我有一个“扩展”JFrame的类,需要从JPanel重写paintComponent。怎么做?或者它可以扩展JPanel,并需要访问方法,如setTitle()、setResizable()和setDefaultCloseOperation();

  • 我有以下类(请注意,方法是静态的): 当我打电话的时候: 我想得到输出: