Я пытаюсь передать объект в его суперкласс с помощью Java.lang.Class.cast, но я получаю тот же объект. В чем причина?Java.lang.Class.cast не возвращает литой объект
Это код, я бегу:
public static void parse(Object obj)
{
// parse all super classes
Class<?> clazz = obj.getClass().getSuperclass();
if (!clazz.equals(prevClass))
{
prevClass = clazz;
Object castedObj = clazz.cast(obj);
parse(castedObj);
}
fillObject(obj);
}
, но при переходе к parse
объект динамического типа В, где В простирается А, castedObj
равно obj
. Но я хочу, чтобы castedObj
был новым объектом динамического типа A, потому что метод parse
полагается на этот факт (итерации в полях класса динамического типа).
Как вы думаете, что делает литье? –
Кастинг! = Создание объекта. –
Вы неправильно понимаете значение 'cast'. Вы не получите новый объект, просто тот же объект, который был добавлен в другой тип. Вы не меняете динамический тип. Для этого вам нужно создать специальный метод. –