0
私はすべてのフィールドがNULLか、コレクションであるかどうかをチェックしたいクラス(スーパークラスを持っています)を持っています。次のコードで、私は、NULLかどうかを確認することができるよ、それはコレクションですが、私はそれがサイズだ確認するためにコレクションをキャストに見えることはできませんか。リフレクション - 継承されたフィールドがすべてnullまたは空きです
public static boolean objectIsEmpty(Object object) {
for (Class<?> c = object.getClass(); c != null; c = c.getSuperclass()) {
Field[] fields = c.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
try {
if (field.get(object) != null) {
if (field.getType().equals(List.class)) {
// System.err.println("len " +
// Array.getLength(field.get(object)));
}
if (Collection.class.isAssignableFrom(field.getType())) {
System.err.println(Collection.class.cast(field).size());
// ClassCastException thrown here
}
}
} catch (IllegalAccessException e) {
// Should not occur with setAccessible(true), return false just
// in case
e.printStackTrace();
return false;
}
}
}
return true;
しかし、それはjava.lang.ClassCastExceptionが、その結果:することはできませんjava.lang.reflect.Fieldからjava.util.Collectionへキャスト
リストのサイズはどのように取得できますか?
もちろん神です。私はそれを考えています。感謝します。 – CounterFlame
あなたは大歓迎です:) –