Überprüfen Sie, ob ein Feld privat ist
Sie können die Felder mit Modifier.isPrivate filtern :
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
Field field = null;
Modifier.isPrivate(field.getModifiers())
auf ein einzelnes Field
Objekt, das zurückgibt, true
wenn das Feld istprivate
Sammle alle Felder einer Klasse
Um alle Felder zu sammeln, verwenden Sie:
1) Wenn Sie nur die Felder der Klasse ohne die Felder aus der Klassenhierarchie benötigen, können Sie einfach Folgendes verwenden:
Field[] fields = SomeClass.class.getDeclaredFields();
2) Wenn Sie das Rad nicht neu erfinden und alle Felder einer Klassenhierarchie abrufen möchten, können Sie sich auf Apache Commons Lang Version 3.2+ verlassen, die Folgendes bietet FieldUtils.getAllFieldsList
:
import java.lang.reflect.Field;
import java.util.AbstractCollection;
import java.util.AbstractList;
import java.util.AbstractSequentialList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.junit.Assert;
import org.junit.Test;
public class FieldUtilsTest {
@Test
public void testGetAllFieldsList() {
final List<Field> allFields = FieldUtils.getAllFieldsList(LinkedList.class);
final List<Field> allFieldsClass = Arrays.asList(LinkedList.class.getFields());
final List<Field> allFieldsParent = Arrays.asList(AbstractSequentialList.class.getFields());
final List<Field> allFieldsParentsParent = Arrays.asList(AbstractList.class.getFields());
final List<Field> allFieldsParentsParentsParent = Arrays.asList(AbstractCollection.class.getFields());
Assert.assertTrue(allFields.containsAll(allFieldsClass));
Assert.assertTrue(allFields.containsAll(allFieldsParent));
Assert.assertTrue(allFields.containsAll(allFieldsParentsParent));
Assert.assertTrue(allFields.containsAll(allFieldsParentsParentsParent));
}
}