我試圖找出如何確定哪些類時,它在對象[]數組給定對象實例化。例如:如何在Object []數組中檢查給定對象是否是某個類的實例?
Object[] array = new Object[]{175, "sss", new Table(), true};
Object obj = array[0]; // hmm... can this be used as an integer or maybe as a string?
這有可能嗎?
我試圖找出如何確定哪些類時,它在對象[]數組給定對象實例化。例如:如何在Object []數組中檢查給定對象是否是某個類的實例?
Object[] array = new Object[]{175, "sss", new Table(), true};
Object obj = array[0]; // hmm... can this be used as an integer or maybe as a string?
這有可能嗎?
您可以撥打getClass()
找出類特定對象,或者您可以使用instanceof
來檢查規範IFIC類型:
if (array[0] instanceof Integer) {
}
通常不必做了很多這表明你的設計弱點,但 - 你應該嘗試向需要避免這樣做。
具體可能沒有整數,但詮釋 – 2012-02-26 18:39:59
他有對象的數組,所以你一定沒有INT – UmNyobe 2012-02-26 18:45:23
@MichalBorek'instanceof'只對工作對象和'int'是不是一個對象。如果你將'int'賦值給'Object',它將被自動轉換爲'Integer'。 – 2012-02-26 18:48:45
您可以測試它是否是一個預先知道類的一個實例(和投它)是這樣的:
if (obj instanceof String) {
String s = (String) obj; //casts the obj now you know it's a String
}
我喜歡把這個還不如做對象,但就像任何變化揭示其真實性格。例如,有點像看到一個人,不知道他們說的是什麼語言 - 這個人仍然是法語,或意大利語,只是你還不知道。演員(即(String) obj
)是你告訴編譯器的相當於「我知道這個人會講法語」
或者你可以得到它的階級是這樣的:
Class<?> clazz = obj.getClass();
一個Class
實例可以使用做相同的檢查:
String.class.isInstance(obj) {
String s = String.class.cast(obj);
}
您可以嘗試使用instanceof
或者你可以嘗試getClass().isAssignableFrom()
,任何適合您的需求
你爲什麼要儲存在'Object'陣列的一切嗎? – 2012-02-26 18:38:35
我使用Object數組來存儲調用Lua函數的參數。 – wassup 2012-02-26 18:39:58