【问题标题】:Finding reference class given primitive class给定原始类查找参考类
【发布时间】:2012-09-16 17:25:49
【问题描述】:

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

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

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

【问题讨论】:

  • 您必须将所有原始类型映射到它们的包装器。例如带有Map<Class, Class> Refection 库在任何情况下都只使用包装器。

标签: java reflection


【解决方案1】:

检查returnType,看看是否是原语:

returnType.isPrimitive();

如果是,get its wrapper class

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

【讨论】:

    猜你喜欢
    • 2015-09-06
    • 1970-01-01
    • 2012-05-17
    • 2020-08-01
    • 2012-10-27
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    相关资源
    最近更新 更多