如何在一个对象上调用同一类的两个方法?我的意思是我尝试编写一个类及其方法来运行上面的代码:
volume = Calculate.do_calc().get_volume(a);
我正在创建计算类及其两个方法。 do_calc() 和 get_volume(a)。我应该如何编写这个类来运行该代码。
除非 do_calc() 返回函数 get_volume() 所在的类,否则永远不应该这样做。
这是给您的一个小样本。
public class ChainTest {
public static void main(String[] args) {
System.out.println(new ChainTest().do_calc().get_volume(1));
}
public ChainTest do_calc() {
// do something;
return ChainTest.this;
}
public int get_volume(int a) {
return a;
}
}
您不需要将代码写在一行中。您可以在不同的行中调用相同的对象方法。
Calculator calculator = new Calculator();
calculator.do_calc();
calculator.get_volume(a);
以防万一,如果你想要静态方法
Calculator.do_calc();
Calculator.get_volume(a);
情况 1 如果 do_calc 是静态的
public class Calculator {
public static void main(String[] args) {
System.out.println(Calculator.do_calc().get_volume(1));
}
public static Calculator do_calc() {
Calculator calculator = new Calculator();
// do something;
return calculator;
}
public float get_volume(int a) {
return a;
}
}
情况2:如果do_calc不是静态的
public class Calculator {
public static void main(String[] args) {
System.out.println(new Calculator().do_calc().get_volume(1));
}
public Calculator do_calc() {
Calculator calculator = new Calculator();
// do something;
return calculator;
}
public float get_volume(int a) {
return a;
}
}
情况3:如果两者都有返回类型float,如您在评论中提到的
public class Calculator {
public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.do_calc();
System.out.println(calculator.get_volume(1));
}
public float do_calc() {
// do something;
return 1f; // return your result
}
public float get_volume(int a) {
// do something;
return a;
}
}
如果类的每个方法不是
return this;
,则必须在其末尾添加 static
。如果方法是static
,请这样做:
public class Calculation {
public static Calculation do_calc () {
//do your calculation
return null;
}
public static Calculation get_volume(int x) {
//do your calculation
return null;
}
}
然后你可以写:
Calculation.do_calc().get_volume(1);
返回
null
没有问题,因为这些方法是静态的,与类的特定实例无关。如果不喜欢那就return new Calculation();
[编辑]
如果您需要将其结果传递给第二个方法,第一个方法应该返回一个真实的对象:
public class Calculation {
int result;
public static Calculation do_calc () {
//do your calculation
Calculation c=new Calculation();
c.result = theResultOfTheCalculation;
return c;
}
public void get_volume(int x) {
//do your calculation for example:
System.out.println(result + x);
}
}