我的物件引數可以是int[]陣列或Integer[]陣列。有沒有辦法確定大小而不必手動檢查它是 aint[]還是Integer[]type?
int length = ((Object[]) param).length
不適用于int[](它會導致 ClassCastException)
我目前的方法是使用:
int length = param instanceof int[] ? ((int[]) param).length : ((Integer[]) param).length;
我想知道是否有一種方法可以在兩種情況下都有效地轉換引數,這樣我就可以避免每次都手動檢查。
編輯:我不小心同時使用了“x”和“param”來命名我的變數。現在我只使用“引數”來使問題不那么令人困惑。
uj5u.com熱心網友回復:
是的。利用Array.getLength()
Object x; // assuming it’s an array
int length = Array.getLength(x);
uj5u.com熱心網友回復:
因為 int 是一個原始型別而 Integer 是一個物件,所以我真的沒有理由認為您應該首先處于這種情況。
無論如何,您可以在不進行強制轉換的情況下執行 param.length - 陣列的長度不依賴于它的型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/392760.html
