本文整理汇总了Java中sun.invoke.util.ValueConversions.zeroConstantFunction方法的典型用法代码示例。如果您正苦于以下问题:Java ValueConversions.zeroConstantFunction方法的具体用法?Java ValueConversions.zeroConstantFunction怎么用?Java ValueConversions.zeroConstantFunction使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sun.invoke.util.ValueConversions
的用法示例。
在下文中一共展示了ValueConversions.zeroConstantFunction方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: convertArguments
import sun.invoke.util.ValueConversions; //导入方法依赖的package包/类
static
MethodHandle convertArguments(MethodHandle target, MethodType newType, int level) {
MethodType oldType = target.type();
if (oldType.equals(newType))
return target;
assert(level > 1 || oldType.isConvertibleTo(newType));
MethodHandle retFilter = null;
Class<?> oldRT = oldType.returnType();
Class<?> newRT = newType.returnType();
if (!VerifyType.isNullConversion(oldRT, newRT)) {
if (oldRT == void.class) {
Wrapper wrap = newRT.isPrimitive() ? Wrapper.forPrimitiveType(newRT) : Wrapper.OBJECT;
retFilter = ValueConversions.zeroConstantFunction(wrap);
} else {
retFilter = MethodHandles.identity(newRT);
retFilter = convertArguments(retFilter, retFilter.type().changeParameterType(0, oldRT), level);
}
newType = newType.changeReturnType(oldRT);
}
MethodHandle res = null;
Exception ex = null;
try {
res = convertArguments(target, newType, oldType, level);
} catch (IllegalArgumentException ex1) {
ex = ex1;
}
if (res == null) {
WrongMethodTypeException wmt = new WrongMethodTypeException("cannot convert to "+newType+": "+target);
wmt.initCause(ex);
throw wmt;
}
if (retFilter != null)
res = MethodHandles.filterReturnValue(res, retFilter);
return res;
}