所以,我已經發現漂亮的打印數組對象,而不是對象數組?
Arrays.toString(arr);
所以不要點我this question。
我的問題只是有點不同。在這種情況下,我沒有一個本地數組指針指向有問題的數組。我把它作爲一個Object指針,它可以是任何類型的數組(原始或其他)。在這種情況下,我可以通過將Object指針強制轉換爲Object []來使用上面的toString()方法。但是,如果指針是一個基本數組,它將引發運行時異常並崩潰。所以?
例子:
double test[] = {1, 2, 3, 4};
Object t = test;
// Now how do I pretty print t as an array with no access to test?
我解決我的問題與此:
public String unkObjectToString(Object o) {
if(!o.getClass().isArray()) return o.toString();
int len = Array.getLength(o);
String ret = "[";
for(int i = 0; i < len; i++) {
Object q = Array.get(o, i);
ret += unkObjectToString(q);
if(i == len - 1)
ret += "]";
else
ret += ", ";
}
return ret;
}
我向編程的神聖之神祈禱,這可以避免,而StackOverflow是我的最後一招。我現在會執行這種可憎的事,但知道我的靈魂隨着即將到來的承諾而被提到地獄的深處。和平,你,兄弟。 *致敬* – Jordan 2010-06-30 20:19:29
拋開戲劇,爲什麼這麼打擾你呢? 10行額外的代碼足以讓你覺得你失去了你的無辜?這些原語不是對象是Java中的核心現實。如果這讓你感到困擾,那麼,克服它,或選擇另一種語言。 – 2010-06-30 20:33:39
它主要困擾我,因爲我正在工作的代碼具有if-else鏈的公平份額,1000行可能很容易被避免,但現在已經在項目中根深蒂固,我希望避免添加鏈接鏈。我用一個遞歸函數修正它(以幫助嵌套數組),類似於Bozho的庫函數。我會將這個函數加入到我的問題中以供參考和批評。 – Jordan 2010-06-30 20:48:14