java.lang.invoke.VarHandle#AccessMode ( )源码实例Demo

下面列出了java.lang.invoke.VarHandle#AccessMode ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: openjdk-jdk9   文件: VarHandleBaseTest.java
TestAccessMode(TestAccessType at) {
    this.at = at;

    try {
        VarHandle.AccessMode vh_am = toAccessMode();
        Method m = VarHandle.class.getMethod(vh_am.methodName(), Object[].class);
        this.returnType = m.getReturnType();
        isPolyMorphicInReturnType = returnType != Object.class;
    }
    catch (Exception e) {
        throw new Error(e);
    }
}
 
源代码2 项目: openjdk-jdk9   文件: VarHandleBaseTest.java
static List<VarHandle.AccessMode> accessModesOfType(TestAccessType... ats) {
    Stream<TestAccessMode> s = Stream.of(TestAccessMode.values());
    for (TestAccessType at : ats) {
        s = s.filter(e -> e.isOfType(at));
    }
    return s.map(TestAccessMode::toAccessMode).collect(toList());
}
 
源代码3 项目: openjdk-jdk9   文件: VarHandleTestReflection.java
@Test(dataProvider = "accessModesProvider", expectedExceptions = IllegalArgumentException.class)
public void methodInvocation(VarHandle.AccessMode accessMode) throws Exception {
    VarHandle v = handle();

    // Try a reflective invoke using a Method

    Method vhm = VarHandle.class.getMethod(accessMode.methodName(), Object[].class);
    vhm.invoke(v, new Object[]{});
}
 
源代码4 项目: openjdk-jdk9   文件: VarHandleTestReflection.java
@Test(dataProvider = "accessModesProvider", expectedExceptions = UnsupportedOperationException.class)
public void methodHandleInvoke(VarHandle.AccessMode accessMode) throws Throwable {
    VarHandle v = handle();

    // Try a reflective invoke using a MethodHandle

    MethodHandle mh = MethodHandles.lookup().unreflect(
            VarHandle.class.getMethod(accessMode.methodName(), Object[].class));
    // Use invoke to avoid WrongMethodTypeException for
    // non-signature-polymorphic return types
    Object o = (Object) mh.invoke(v, new Object[]{});
}
 
源代码5 项目: openjdk-jdk9   文件: VarHandleTestReflection.java
@Test(dataProvider = "accessModesProvider", expectedExceptions = IllegalArgumentException.class)
public void methodInvocationFromMethodInfo(VarHandle.AccessMode accessMode) throws Exception {
    VarHandle v = handle();

    // Try a reflective invoke using a Method obtained from cracking
    // a MethodHandle

    MethodHandle mh = MethodHandles.lookup().unreflect(
            VarHandle.class.getMethod(accessMode.methodName(), Object[].class));
    MethodHandleInfo info = MethodHandles.lookup().revealDirect(mh);
    Method im = info.reflectAs(Method.class, MethodHandles.lookup());
    im.invoke(v, new Object[]{});
}
 
源代码6 项目: openjdk-jdk9   文件: VarHandleTestReflection.java
@Test(dataProvider = "accessModesProvider", expectedExceptions = IllegalArgumentException.class)
public void reflectAsFromVarHandleInvoker(VarHandle.AccessMode accessMode) throws Exception {
    VarHandle v = handle();

    MethodHandle mh = MethodHandles.varHandleInvoker(
            accessMode, v.accessModeType(accessMode));

    MethodHandleInfo info = MethodHandles.lookup().revealDirect(mh);

    info.reflectAs(Method.class, MethodHandles.lookup());
}
 
源代码7 项目: openjdk-jdk9   文件: VarHandleTestReflection.java
@Test(dataProvider = "accessModesProvider", expectedExceptions = IllegalArgumentException.class)
public void reflectAsFromFindVirtual(VarHandle.AccessMode accessMode) throws Exception {
    VarHandle v = handle();

    MethodHandle mh = MethodHandles.publicLookup().findVirtual(
            VarHandle.class, accessMode.methodName(), v.accessModeType(accessMode));

    MethodHandleInfo info = MethodHandles.lookup().revealDirect(mh);

    info.reflectAs(Method.class, MethodHandles.lookup());
}
 
private static Class<?> getAccessModeReturnType(VarHandle.AccessMode am) throws Exception {
    Field field_am_at = VarHandle.AccessMode.class.getDeclaredField("at");
    field_am_at.setAccessible(true);
    Field field_at_returnType = field_am_at.getType().getDeclaredField("returnType");
    field_at_returnType.setAccessible(true);
    return (Class<?>) field_at_returnType.get(field_am_at.get(am));
}
 
源代码9 项目: openjdk-jdk9   文件: VarHandleBaseTest.java
VarHandle.AccessMode toAccessMode() {
    return VarHandle.AccessMode.valueOf(name());
}
 
源代码10 项目: openjdk-jdk9   文件: VarHandleBaseTest.java
static List<VarHandle.AccessMode> accessModes() {
    return Stream.of(VarHandle.AccessMode.values()).collect(toList());
}
 
@Test(dataProvider = "accessModesProvider")
public void testMethodName(VarHandle.AccessMode am) {
    assertEquals(am.methodName(), toMethodName(am.name()));
}
 
@Test(dataProvider = "accessModesProvider")
public void testReturnType(VarHandle.AccessMode am) throws Exception {
    assertEquals(getReturnType(am.methodName()), getAccessModeReturnType(am));
}