public class A {
private String property;
public String getProperty() {
return property;
}
}
public class B {
private String property;
public String getProperty() {
return property;
}
}
аналогично определены классы C и D. (Опуская другую логику и сложность)
Затем создал перечисление этих имен классов. [Простое имя класса или каноническое имя класса, которое я могу добавить без проблем]
public enum ClassNameEnum{ A, B, C, D }
В другом классе у меня есть массив Object, который содержит экземпляры любого из перечисленных классов.
Моя цель:
Получите каждый элемент в массиве объектов, приведите их к одному из имен classe в myEnum и выполните вызов метода.
Что я сделал до сих пор.
(1) цикл по массиву объектов и, если еще лестница, чтобы проверить instanceof. При совпадении приведите и сделайте операцию [работает, но безобразно]
(2) Улучшение:
public class ImplClass {
public static void main(String[] args)
{
List<Object> objectList = new ArrayList<Object>();
objectList.add(new B());
objectList.add(new D());
objectList.add(new A());
for (Object object : objectList) {
Arrays.asList(ClassNameEnum.values()).stream()
.filter(e -> obj instanceof e) // Error here: e cannot be resolved to a type
.map(e -> (e)obj)
.map("Call getProperty() on the casted object and return the string"); // This is what I want to do
}
}
}
Заранее спасибо