要「參觀」如果你真的想doStuff
返回兩個值:有可能是一個更好的方式來設計這個。不過,如果你已經決定,爲doStuff
返回兩個值確實是最好的設計,可以用一個簡單的輔助類完成:
static class MyClassAndBoolean {
public MyClass obj;
public boolean b;
public MyClassAndBoolean(MyClass obj, boolean b) { this.obj = obj; this.b = b; }
}
,然後改變doStuff
的返回類型爲MyClassAndBoolean
。這是我認爲在一個班上的公共領域是好的極少數情況之一。既然你定義了一個簡單的類來作爲函數的結果,而不是代表一個連貫的概念,那麼關於定義訪問器而不是暴露字段的常見問題並不適用。 (PS我只猜到boolean
對於其他類型的,但它可以是任何東西,當然。)
另一個解決方法:
MyClass[] obj = new MyClass[1];
result = doStuff(obj);
變化doStuff
的參數類型爲MyClass[]
,並且有它的東西了新對象分成parameter[0]
。我確實看到了一些Java和Android庫方法中使用的習慣用法。
來源
2014-02-27 18:10:58
ajb
看看[這裏](http://stackoverflow.com/questions/21274346/how-can-you-extend-java-to-introduce-passing-by-reference)。 –
'MyClass object = doStuff()'怎麼樣? –
Java中沒有指針。實現某種形式的「out」或「by ref」調用語義的唯一方法是* mutate *作爲參數提供的對象 - 如後一種情況所示。我建議讓'doStuff'簡單*返回一個有用的(複合)值。 – user2864740