Есть 2 проблемы, которые легко исправить:
Объявите clazz
как Class<aaa>
, чтобы исключить необходимость приведения clazz.cast(b)
к aaa
:
Class<aaa> clazz = aaa.class;
aaa a = clazz.cast(b); //works
Class.forName
возвращает Class<?>
, поэтому вам нужно явно привести:
aaa a1 = (aaa) Class.forName("aaa").cast(object);
aaa a2 = (aaa) Class.forName("aaa").cast(b);