如果我有定义的方法。

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泛型有点痛苦的另一种情况:(

10-05 23:05