Это было бы совершенно законно
public class Test {
public static void main (String[] args) {
Object o = new String("abc123");
try {
String s = cast(o, "java.lang.String");
System.out.println(s);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static <T> T cast(Object o, String clazz) throws ClassNotFoundException {
return (T) Class.forName(clazz).cast(o);
}
}
Вопрос в том, чего бы вы достигли? Не важно. Конечно, вы можете привести объект на основе строки (Class.cast (...)), но вам все равно нужно объявить ваш вывод как String во время компиляции. Разница между типом времени выполнения и типом времени компиляции. И ява строго типизирована. Компилятор не будет пытаться преобразовать вашу строку в тип, а дженерики строго во время компиляции.