すべてのオブジェクトの値が空であることをチェックするメソッドを作成したいと思います。入力オブジェクトがnull
ならばreturn true;
です。入力が配列の型である場合、長さを確認してください。以下は、私の方法はプリミティブ空の配列をチェックする方法
public static boolean isEmpty(Object input) {
if (input == null) {
return true;
}
if (input instanceof Collection) {
if (((Collection<?>) input).size() == 0) {
return true;
}
}
if (input instanceof String) {
if (((String) input).trim().length() == 0) {
return true;
}
}
if (input instanceof Object[]) {
if (((Object[]) input).length == 0) {
return true;
}
}
return false;
}
このロジックを実装することである。しかし、私は、この
int[] a = {};
float[] b = {};
Integer[] c = {};
Float[] d = {};
System.out.println(Validator.isEmpty(a));
System.out.println(Validator.isEmpty(b));
System.out.println(Validator.isEmpty(c));
System.out.println(Validator.isEmpty(d));
のようにテスト中の問題は、私はa
とb
がfalse
である理由は分からないです。誰かが私を説明できますか?
:次に、あなたはその長さを(奇妙に、あなたは
length
フィールドを取得するためにClass#getField
を使用することはできません、ので)を取得するためにArray.getLength
を使用することができます'new float [0] instanceof Object []'を実行したときに得られる結果を確認しましたか? –この方法には具体的な理由はありますか?異なる型引数を取る3つの異なる 'isEmpty'メソッドの使用を検討しましたか? – pathfinderelite
@ T.J.Crowderおっと!私は '互換性のない条件付きオペランド型float []とObject []'を持っています – Cataclysm