如何在同一个类中调用两个方法?

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 我想我错了,我说它们不是静态的,但我现在学会了。要在不创建对象的情况下调用方法,该方法应该是静态的吗?然后我应该使方法静态。如果我错了,请纠正我

以上是关于如何在同一个类中调用两个方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何让方法在类中调用另一个方法?

如何在C#中,在一个类里调用另外一个类的方法

如何从另一个类中调用 onItemClick 方法?

objective-c 中如何在一个函数中调用自己类中的另外一个函数

在Java中,如何从派生类中的重写方法调用基类的方法?

C# Specflow:如何在另一个文件夹的类中调用具有动态表作为参数的方法