MethodHandle.AsFixedArity 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
<将 em>固定 arity</em> 方法句柄设置为等效于当前方法句柄。
[Android.Runtime.Register("asFixedArity", "()Ljava/lang/invoke/MethodHandle;", "GetAsFixedArityHandler", ApiSince=26)]
public virtual Java.Lang.Invoke.MethodHandle? AsFixedArity();
[<Android.Runtime.Register("asFixedArity", "()Ljava/lang/invoke/MethodHandle;", "GetAsFixedArityHandler", ApiSince=26)>]
abstract member AsFixedArity : unit -> Java.Lang.Invoke.MethodHandle
override this.AsFixedArity : unit -> Java.Lang.Invoke.MethodHandle
返回
一个新方法句柄,它只接受固定数量的参数
- 属性
注解
<将 em>固定 arity</em> 方法句柄设置为等效于当前方法句柄。
如果当前方法句柄不是 #asVarargsCollector 变量 arity,则返回当前方法句柄。 即使当前方法句柄不能是有效的输入, asVarargsCollector也是如此。
否则,生成的固定 arity 方法句柄的类型和行为与当前方法句柄的类型和行为相同,不同之处在于该 #isVarargsCollector isVarargsCollector 句柄为 false。 固定 arity 方法句柄可以是上一个参数 asVarargsCollector。
下面是列表生成变量 arity 方法句柄的示例: <blockquote>
{@code
MethodHandle asListVar = publicLookup()
.findStatic(Arrays.class, "asList", methodType(List.class, Object[].class))
.asVarargsCollector(Object[].class);
MethodHandle asListFix = asListVar.asFixedArity();
assertEquals("[1]", asListVar.invoke(1).toString());
Exception caught = null;
try { asListFix.invoke((Object)1); }
catch (Exception ex) { caught = ex; }
assert(caught instanceof ClassCastException);
assertEquals("[two, too]", asListVar.invoke("two", "too").toString());
try { asListFix.invoke("two", "too"); }
catch (Exception ex) { caught = ex; }
assert(caught instanceof WrongMethodTypeException);
Object[] argv = { "three", "thee", "tee" };
assertEquals("[three, thee, tee]", asListVar.invoke(argv).toString());
assertEquals("[three, thee, tee]", asListFix.invoke(argv).toString());
assertEquals(1, ((List) asListVar.invoke((Object)argv)).size());
assertEquals("[three, thee, tee]", asListFix.invoke((Object)argv).toString());
}
</blockquote>
Java文档java.lang.invoke.MethodHandle.asFixedArity()。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。