如何在同一个类中调用两个方法?
Posted
技术标签:
【中文标题】如何在同一个类中调用两个方法?【英文标题】:How to call two methods in same class? 【发布时间】:2017-01-17 07:15:33 【问题描述】:如何在一个对象上调用同一类的两个方法?我的意思是我尝试编写一个类,它是在代码上方运行的方法:
volume = Calculate.do_calc().get_volume(a);
我正在创建Calculate 类和它的两个方法。 do_calc() 和 get_volume(a)。我应该如何编写这个类来运行该代码。
【问题讨论】:
它取决于很多东西,比如你的方法是静态的吗?方法的返回类型是什么? 它们的返回类型是float。 它们是静态的吗?并且都具有相同的返回类型? 它们不是静态的。是的,它们具有相同的返回类型。do_calc() 方法将有多个 get_volume() 方法。我想我会重载 get_volume() 方法。但是我不明白如何在一行中调用同一类的两个方法。 请参考我的分析器,如果两者具有相同的返回类型,则无法在一行中调用 【参考方案1】:除非 do_calc() 返回函数 get_volume() 所在的类,否则永远不要这样做。
【讨论】:
s/should never/cannot/g
.【参考方案2】:
这是给你的一个小样本。
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;
【讨论】:
s/ChainTest.this/this/g
@BoristheSpider - 你在这里评论了什么?我没找到你【参考方案3】:
您不需要在一行中编写代码。您可以在不同的行中调用相同的对象方法。
Calculator calculator = new Calculator();
calculator.do_calc();
calculator.get_volume(a);
如果你想要静态方法
Calculator.do_calc();
Calculator.get_volume(a);
【讨论】:
【参考方案4】:案例 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;
【讨论】:
【参考方案5】:如果不是static
,您必须在类的每个方法的末尾加上return this;
。如果方法是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);
【讨论】:
这似乎是一个static
方法,在这种情况下do_calc()
需要是一个静态工厂方法。不像return this
那么简单...
但他说“超过一个对象”! @BoristheSpider
这是一个菜鸟Java程序员,不要看那么多字。看看语法 - 至少对我来说,它看起来更像 static
方法而不是实例方法。
现在不是@BoristheSpider
我想我错了,我说它们不是静态的,但我现在学会了。要在不创建对象的情况下调用方法,该方法应该是静态的吗?然后我应该使方法静态。如果我错了,请纠正我以上是关于如何在同一个类中调用两个方法?的主要内容,如果未能解决你的问题,请参考以下文章