从原始类转到包装类

时间:2016-08-15 11:01:49

标签: java class wrapper primitive boxing

Java是否存在从int.class等原始类到包装类Integer.class的通用方法,给定java.lang.Class对象#isPrimitive()返回{{1} }}?

某些上下文:我正在为接口代理编写true。在InvocationHandler方法的最后,我想确保我要返回的对象与接口方法的返回类型匹配。通常我会使用#invoke但是这对原始类型不起作用,因为Method.getReturnType().cast(Class)不接受int.class.cast(Class)个实例。

除了手动映射每个原始类之外,还有一种通用的方法吗?

编辑:

我不打算创建一个新的或默认的实例。我只需要班级进行类型检查。这是一个解释该问题的代码:

java.lang.Integer

class ProblemDemo implements InvocationHandler { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object returnValue = doGenericProxyStuff(); return method.getReturnType().cast(returnValue); } private Object doGenericProxyStuff() { // generic code there that always returns a wrapper } } 用于确保类型匹配。但是,如果方法返回类型#cast(),则会失败。因为int返回method.getReturnType()而非int.classInteger.class必须返回#doGenericProxyStuff()实例,因为Integer必须返回基本类型的包装类型。我需要一种从#invoke()int.class的方式。

0 个答案:

没有答案