我想知道如何問java對象是List還是ArrayList。如何知道java對象是否是列表
例如:
if (Object instanceof List <?>)) {
// Do something
}
PS:我有幾個不同類型的列表和想實現任何列表的方法,無論它們所包含的數據類型。
我想知道如何問java對象是List還是ArrayList。如何知道java對象是否是列表
例如:
if (Object instanceof List <?>)) {
// Do something
}
PS:我有幾個不同類型的列表和想實現任何列表的方法,無論它們所包含的數據類型。
爲了測試是否一個實例是一個List
或ArrayList
,只需使用instanceof
。
注意的是,根據JLS 15.20.2,所述instanceof
操作的類型的操作數必須是reifiable類型,和在JLS 4.7定義爲:
所以這兩個應該是有效的:
if (obj instanceof List)) { // raw type
// Do something
}
if (obj instanceof List <?>)) { // type parameter is an unbounded wildcard
// Do something
}
,但是這將是一個編譯錯誤:
if (obj instanceof List <Integer>)) {
// Do something
}
I have several lists of different types and would like to implement the method for any list no matter what type of data they contain.
這是沒有問題的。
(但是,如果您希望該方法僅適用於包含特定類型數據的列表,那麼這將是一個問題......它基於簡單的運行時類型檢查。泛型類型的類型參數在運行時不可用於運行時測試,所以你需要單獨測試列表中的每個元素...)
1 - 請注意,任何ArrayList
是也一個List
......因爲ArrayList
類實現List
接口。
剛剛擺脫的'<>'。 –
'ArrayList' _is_ a'List'。你問是否是List的另一個實現? –
你也可以使用.getClass方法並檢查它返回的內容 – ederollora