如果我有定义的方法。
public static <T> T getSomeTea(Class<T> returnType) {
//do stuff and return a T
}
public static <T> T getSomeSpecialTea(T someVal) {
T someTea = (T) getSomeTea(someVal.getClass());
}
在getSomeSpecialTea中,为什么需要强制从getSomeTea返回收益。在我看来,演员阵容是不必要的,但也许我错过了一些重要的事情。
最佳答案
Object.getClass()
不是通用的,因此您的代码有效:
public static <T> T getSomeSpecialTea(T someVal) {
Class<?> clazz = someVal.getClass();
T someTea = (T) getSomeTea(clazz);
}
在这一点上,您为什么需要演员表就更清楚了? (当然,并不是强制转换在执行时会做任何事情……)您不是在有效地调用
<T>getSomeTea()
,这是您真正想要做的。这只是Java泛型有点痛苦的另一种情况:(