2016-09-09 5 views
-2

Wie kann ich zwei Methoden aus der gleichen Klasse über ein Objekt aufrufen, ich meine, ich versuchen, eine Klasse zu schreiben und es Methoden, die oben Code auszuführen:Wie zwei Methoden in derselben Klasse aufgerufen werden? ?

volume = Calculate.do_calc().get_volume(a); 

Ich schaffe berechnen Klasse und zwei Methoden davon. do_calc() und get_volume (a). Wie sollte ich diese Klasse schreiben, um diesen Code auszuführen. Danke.

+0

seine hängt von vielen Dingen, wie ist Ihre Methode statisch? Was ist der Rückgabetyp von Methoden? –

+0

Ihr Rückgabetyp ist Float. – RasimGuler

+0

sind sie statisch? und beide haben denselben Rückgabetyp? –

Antwort

0

Sie müssen return this; am Ende jeder Methode Ihrer Klasse, wenn sie nicht static sind. Wenn die Methoden static sind, tun Sie es wie folgt aus:

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; 
     } 
} 

Dann können Sie schreiben:

Calculation.do_calc().get_volume(1); 

Kein Problem null bei der Rückkehr, da die Methoden statisch sind und nicht auf eine bestimmte Instanz des verwandten Klasse. Wenn Sie es nicht mögen, dann return new Calculation();

[Bearbeiten]

Die erste Methode sollte ein reales Objekt zurück, wenn Sie das Ergebnis der zweiten Methode übergeben müssen:

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); 
     } 
} 
+0

Es scheint eine 'statische' Methode zu sein, in diesem Fall' do_calc() 'müsste eine statische Fabrikmethode sein. Nicht ganz so einfach wie 'return this' ... –

+0

Aber er sagt" über ein Objekt "[email protected] BoristheSpider – AhmadWabbi

+0

Dies ist ein Anfänger Java-Programmierer, lesen Sie nicht so viel in die Wörter. Sehen Sie sich die Syntax an - sie sieht viel mehr wie eine "statische" Methode aus als eine Instanz - zumindest für mich. –

0

Sofern do_calc() gibt die Klasse zurück, in der sich die Funktion get_volume() befindet. Dies sollte niemals geschehen.

+1

's/sollte nie/kann nicht/g'. –

0

Hier ist eine kleine Auswahl für Sie.

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; 
     } 
} 
+0

's/ChainTest.this/this/g' –

0

Sie müssen den Code nicht in einer Zeile schreiben. Sie können dieselben Objektmethoden in verschiedenen Zeilen aufrufen.

Calculator calculator = new Calculator(); 
calculator.do_calc(); 
calculator.get_volume(a); 

Im Fall, wenn Sie

Calculator.do_calc(); 
Calculator.get_volume(a); 
0

Fall 1 statische Methoden möchten Wenn do_calc statisch

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; 
    } 
} 

Fall 2: Wenn do_calc ist nicht statisch

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; 
    } 
} 

Fall 3: Wenn beide Rückgabetyp float haben, wie Sie in Kommentar erwähnt

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; 
    } 
} 
Verwandte Themen