2008-12-11 60 views
0

我有一個返回一個雙精度數組的Java方法。然後,我想將這些值存儲在調用函數中的各個變量中。有沒有在Java中這樣做的優雅方式。將數組中的變量直接設置爲Java中的變量列表

我可以寫,因爲這:

double[] returnValues = calculateSomeDoubles(); 
double firstVar = returnValues[0]; 
double secondVar = returnValues[1]; 

我只是想知道是否有壓縮下來,一條線路的一些方法?喜歡的東西:

(firstVar, secondVar) = calculateSomeDoubles(); 

這種類型的事情是,當腳本很容易,但Java的更強的類型意味着它可能是不可能的。

回答

5

基本上沒有,這是不可能的。

您必須返回包含值的對象。

MyObject myObject = calculateMyObject(); 
1

唯一的方法是使用反射,並且事先知道「calculateSomeDouble」將返回多少項方法。

變體this將需要。但正如你所看到的,還有更多的代碼。

那麼引發的問題是?你想要這個自動化的東西?或者爲了節省開發時間(避免複製/粘貼)?

如果你想自動化一些任務(比如在運行時填充一個對象),那麼值得做反射調用和寫入方法。

您將需要設置值而不是僅打印它。

客戶端調用看起來應該像

SomeUtility.fill(myObject , withDoublesFromMethod()); 
1

當你沒有,你得到2個值恢復您可以通過參考

打電話給你梅索德USIG通話
void methode(double[] array) 

你可以提交一個數組長度爲2,把值iside的梅索德。

或者如果返回值可以更改,則返回Collection。

List methode() 

IA米沒有返回值的朋友喜歡

double[] methode() 

當您使用列表或類別的梅索德是OT靜態你使用數組處理。您可以在其他項目中更好地重用該方法。

0

我的第一本能是質疑你做這種事情的動機。如果您的程序中有一組相關的雙打,爲什麼不將它們存儲在列表中?

如果你是,你可以做這樣的事情:

List<Double> myVars = Arrays.asList(calculateSomeDoubles()); 

但是如果你必須將它們存儲在單個變量不能幹淨利落地一個行來完成。我建議你而不是使用一些建議的基於反射的解決方案。按照您的初步建議,簡單地將您的作業寫成多行可能會更好。

+0

我認爲使用列表作爲返回值(或類似的東西,也許是一個HashMap),但我認爲,爲了可讀性,我最終將它們分配給更好的名稱,所以返回一個雙精度數組更容易。 – kaybenleroll 2008-12-11 18:10:58