2016-11-27 41 views
1

這裏總共有初學者編碼,所以請儘量做到初學者友好!例如,我最近才瞭解學校的課程和對象。 另外,請原諒任何錯誤的命名/混淆:)我可以使用一個對象作爲java中一個方法的變量嗎?

我一直有很多的實例,我在寫一個方法,但想要返回多個變量。我想 - 「如果我做了什麼是包含了所有我的工作變量的類,然後返回只是它的實例從我的方法

例子:

public class Mathematics { 
    int number1; 
    int number2; 
} 

public class MyClass { 
    public static void main (String [] args); 


    public static <class?> MyMethod (<class Mathematics?>) 
     //in here, the method works with numbers one and two, and then returns them, like so: 
     return Mathematics; 
    } 
} 

現在記住,這一點?不正是我想要做的,但本質上,我想用一個類作爲另一個類的方法使用的「變量容器」。 如果不這樣做的方式,我想知道什麼是(和請,保持儘可能簡單:))。

謝謝!

+0

可以接受並直接返回類,就像任何其他類型的? – SLaks

+0

它被稱爲POJO(普通舊Java對象),它可以以任何方式用於其他基元和對象(int,double,String等)。所以是的,創建一個POJO,其中包含您想要傳遞給方法的所有數據/從方法返回。 –

+0

「_but但想從它返回多個變量_」它們都是相同的類型,你也可以返回一個'Array'(甚至是'ArrayList')。 – Gulllie

回答

4

是的,你在正確的軌道上!這是一個常見的編碼模式,可以準確解決這個問題,如何返回多個值。

public static Mathematics myMethod(int param1, String param2, float param3) { 
    Mathematics result = new Mathematics(); 

    result.number1 = param1 * 2; 
    result.number2 = param2.length(); 

    return result; 
} 

項注意:

  1. 返回類型是Mathematics
  2. 參數可以是任何東西。他們不需要與Mathematics班有關,儘管他們可能是。
  3. 首先,實例化一個新的對象與new Mathematics(),並給它一個任意名稱。
  4. 然後,您認爲合適的分配給每個字段的值。
  5. 最後,返回該變量。

而且,我改變了它從MyMethodmyMethod到標準的Java命名約定相匹配。


如果再想用另一種方法,對象的工作,這種方法應該採取Mathematics對象作爲參數。

public static void otherMethod(Mathematics values) { 
    System.out.println("number1 is " + values.number1); 
    System.out.println("number2 is " + values.number2); 
} 

爲什麼此方法將其作爲參數,而第一個返回它?所不同的是一個方法是否願意接受一個設定值,或回報之一。如果它想要接收值,它需要一個類型爲Mathematics的參數。如果它想要返回值給調用者,它應該有一個返回類型Mathematics

換言之,是值的輸入,或輸出?

這些不是相互排斥的,順便說一句。一個方法可以接受並返回一個對象。舉個例子:

/** 
* Returns half of the input values. Does not modify the input object. 
* Instead, a new object is returned. 
*/ 
public static Mathematics halfOf(Mathematics input) { 
    Mathematics output = new Mathematics(); 

    output.number1 = input.number1/2; 
    output.number2 = input.number2/2; 

    return output; 
} 

此類型可稱爲像這樣:

Mathematics values = myMethod(42, "foobar", 3.14); 
Mathematics altered = halfOf(values); 

System.out.println("Half of " + values.param1 + " is " + altered.param1); 
System.out.println("Half of " + values.param2 + " is " + altered.param2); 
+0

**謝謝!**知道這不應該是不可能的:)。 如果我需要再次用另一種方法處理類型爲「Mathemathics」的「結果」實例,該怎麼辦?下一個方法將被定義爲 公共靜態Mathemathics anotherMethod(int result.param1,字符串result.param2)等? –

相關問題