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?

Díky. O tomhle jsem nevěděl, ale udělal jsem to jiným způsobem.

Když použiji kód v předešlé otázce

public ArrayList<String> getAllFields() {
               return Arrays.stream(getClass().getDeclaredFields())
                           .filter(field -> !Modifier.isStatic(field.getModifiers()))
                           .map(this::getFieldValue)
                           .filter(Objects::nonNull)
                           .map(Objects::toString)
                           .collect(Collectors.toCollection(ArrayList::new));
}

private Object getFieldValue(final Field field) {
      try {
            return field.get(this);
      } catch (final IllegalAccessException e) {
            throw new RuntimeException(e);
      }
}

Tak změním

.filter(Objects::nonNull)

na

.filter(object -> Objects.nonNull(object) && (object instanceof String || object instanceof Integer))

Ale, nejsem si jistý, jestli je tohle nejlepší způsob. Co myslíte Vy?

Navíc, nechci se odkazovat pouze na Integer. Nevíte, jak se odkazovat na celá čísla, bez nutnosti vypisovat všechny použitelné datové typy? Pokud je to vůbec možné.

Prosím o radu.

Děkuji

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...