3

我正在尝试为基本 Java 反射构建一个类型更安全的替代方案,并且遇到了一些问题。我有一个BoundMethod<T>绑定方法和对象的类,因此可以调用该方法并以类型安全的方式返回结果(类型 T)。这涉及将一个 Class 传递给构造函数,并使用该类来转换返回值(即return returnType.cast(method.invoke(object, params)))。

我遇到的问题是,如果我根据getReturnType()方法对象中的结果自动创建这些对象并且返回类型是原始对象,我会得到 ClassCastException,因为您不能动态转换为原始类型。我需要一种替换适当引用类型的方法,但我找不到一种简单的方法来做到这一点。

有一些预先构建的解决方案,还是我需要自己构建一个?

4

1 回答 1

3

检查returnType并查看它是否是原语:

returnType.isPrimitive();

如果是,获取它的包装类

不幸的是,这使您可以对值进行自动装箱,但这只是在混合泛型和原语时发生的情况。

于 2012-09-16T09:25:49.880 回答