Tak jsem to upravil do téhle podoby.
public ArrayList<String> getAllFields() {
return Arrays.stream(getClass().getDeclaredFields())
.filter(field -> !Modifier.isStatic(field.getModifiers()))
.map(this::getFieldValue)
.filter(Objects::nonNull)
.map(Objects::toString)
.filter(field -> field.matches("-?\\d+") || isName(field))
.collect(Collectors.toCollection(ArrayList::new));
}
private Object getFieldValue(final Field field) {
try {
return field.get(this);
} catch (final IllegalAccessException e) {
throw new RuntimeException(e);
}
}
private boolean isName(String field) {
return field.equals(name); - name je název fieldu třídy
}
Teď to dělá přesně, co chci. Ale chtěl jsem ještě jednu úpravu.
Tu bych ale dal do samostatné otázky. - odkaz
Každopádně díky za matches.