2014-07-17 51 views
-1

我幾乎肯定這個問題之前已經被問過了,因爲我確定我不是第一個有這個問題的人,但我不知道正確的搜索詞來獲得我的答案,所以如果你可以指向正確的方向,我真的很感激它。如何訪問我的Java對象的一部分?

我有一個對象在一個Java類,當我鼠標,說:

variableName = Object[6] 
    >[0] = "words in here" 
    >[1] = "a few more words" 
    >[2] = float 
    >[3] = float 
    >[4] = integer 
    >[5] = integer 

我想打印出來「在這裏的話」,並得到整數的值[5]。我該怎麼做呢?我已經嘗試過幾件事情,比如

String whatsNeeded = variableName[0]; 
String whatToGet = variableName.toString(); 

但是這兩個都沒有得到我想要的。實際上,variableName [0]給了我一個錯誤,而variableName.toString()打印出[Ljava.lang.Object; @blahblah

有關如何獲取我想要的字段的任何提示?謝謝!!

回答

3
String whatsNeeded = variableName[0]; 

給你一個錯誤,因爲你有一個Object[]類型,所以variableName[0]的類型爲Object,不String。您必須下載它:String whatsNeeded = (String)variableName[0]

關於variableName.toString()toString對陣列數據類型不起作用,因爲你打算只是在內存中打印引用。您應該使用Arrays.toString(variableName)來獲得正確的打印值。

看着你的評論,它看起來像你不能訪問variableName[]運營商的項目。這是因爲你可能它分配給Object類型的變量,例如:

Object[] array = new Object[6]; 
Object object = array; 

array[0] // valid 
object[0] // invalid, it is an array at runtime but not at compile time 

如果這是你必須首先將其轉換爲一個數組的情況:

Object asArray = (Object[])variableName; 
String whatsNeeded = (String)asArray[0]; 
+0

好吧,所以我試着像你建議的那樣鑄造它,但是出現的錯誤仍然存​​在。它說「表達式的類型必須是數組類型,但它解析爲對象」。這有意義嗎? – Kmanc

+1

也許你並沒有將數組存儲在Object []變量中,而是存儲在Object中。檢查我的編輯。 – Jack

+0

釘了它,謝謝! (我覺得啞巴哈哈) – Kmanc

0

試鑄造,例如:

String tmp=(String)varName[0]; 
0

當你這樣做:

variableName.toString() 

您正在調用toString方法,因此您需要知道它如何工作,或者您可以重寫該方法。

現在,如果你想打印數組中的一個元素,在這種情況下,第一個元素,你需要知道對象的類型,如果你的程序是動態的,那麼你需要一組方法或只有「如果」語句,以驗證您的陣列中的每個元素,最後你必須做一個鑄件的對象,例如:

if (variableName[0] instanceof String) { 
((String)variableName[0]).toString(); 
} 

我希望這個信息可以幫助你。

祝你好運。

+0

這個問題和上面的答案一樣。問題在於它不喜歡variableName之後的[]。它看起來像一個數組,但顯然爲了獲取值而行爲不同 – Kmanc