Lets sagen, ich habe diese drei Klassen (stark reduziert):Liste <Base>-<Long> Liste ... bedingter Guss
public interface Base
{
String getType();
}
public class Object1 implements Base
{
String getType() { ... };
long getSerialNr() { ... };
}
public class Object2 implements Base
{
String getType() { ... };
long getPartNr() { ... };
}
Wie würde ich (Java 8-Streams verwendet wird) konvertiert eine List<Base>
auf einen List<Long>
mit bedingten Abgüsse ? Ich begann mit diesem:
List<Long> result = baseList.stream().filter(Objects::nonNull)
.filter(Object1.class::isInstance)
.map(Object1.class::cast)
.map(o -> o.getSerialNr())
.collect(Collectors.toList());
... aber wie kann ich den zweiten Fall zu integrieren, in dem das Element eine Instanz von Object2
ist und ich möchte getPartNr
zurückzukehren?
Warum nicht einfach zu erklären 'lange getId()' im 'Base'-Schnittstelle? – Holger
Das ist leider nicht möglich. Das ist nur ein vereinfachtes Beispiel für mein "Real World Problem", bei dem es sinnvoll ist, getId() nicht in der Schnittstelle zu haben. – paddy3k