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.class
。 Integer.class
必须返回#doGenericProxyStuff()
实例,因为Integer
必须返回基本类型的包装类型。我需要一种从#invoke()
到int.class
的方式。