Previous questionИспользование ArrayList <Class?> для литья?
У меня есть следующий код:
ArrayList<Object> list = new ArrayList<Object>();
list.add("StringType");
list.add(5);
list.add(new RandomClass());
List<Class<?>> classes = new ArrayList<>();
classes.add(String.class);
classes.add(int.class);
classes.add(RandomClass.class);
for (int i = 0; i < list.size(); i++) {
if (classes.get(i).isInstance(list.get(i))) {
...
}
}
if (isvalid)
mymethod(...);
public void mymethod(String string, int num, RandomClass randomClass){ }
Теперь я пытаюсь преобразовать объект в правильный тип с методом, используя строку в качестве аргумента.
Вместо:
mymethod((String) list.get(0), (int) list.get(1), (RandomClass) list.get(2));
Я хотел бы повторно использовать определение, созданное выше для актеров.
mymethod((define.get(0)) list.get(0), ....);
Я также пытался использовать Class.cast (obj), но, конечно, он возвращает тип '?' который снова побеждает цель повторного использования его (String).
Это ** не может быть безопасным по типу, поскольку вы можете изменять типы во время выполнения, вызывая «ClassCastException». Поэтому вы ** не можете ** иметь то, что хотите. –