Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Java - ArrayList - Stream - Jak přefiltrovat pouze čísla a String?

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.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny

loading...