blob: 189937028635b3c419b8bcb02eeb33e3c12d8b35 [file] [log] [blame]
// Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package varhandle;
import java.lang.invoke.MethodHandles;
import varhandle.util.WithPrivateFields;
public class MethodHandlesPrivateLookupIn {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
MethodHandles.Lookup lookup = MethodHandles.lookup();
WithPrivateFields withPrivateFields = new WithPrivateFields();
try {
lookup.findVarHandle(WithPrivateFields.class, "intField", int.class).get(withPrivateFields);
System.out.println("Unexpected success");
} catch (IllegalAccessException e) {
}
System.out.println(
MethodHandles.privateLookupIn(WithPrivateFields.class, lookup)
.findVarHandle(WithPrivateFields.class, "intField", int.class)
.get(withPrivateFields));
try {
lookup.findVarHandle(WithPrivateFields.class, "longField", long.class).get(withPrivateFields);
System.out.println("Unexpected success");
} catch (IllegalAccessException e) {
}
System.out.println(
MethodHandles.privateLookupIn(WithPrivateFields.class, lookup)
.findVarHandle(WithPrivateFields.class, "longField", long.class)
.get(withPrivateFields));
try {
lookup
.findVarHandle(WithPrivateFields.class, "referenceField", Object.class)
.get(withPrivateFields);
System.out.println("Unexpected success");
} catch (IllegalAccessException e) {
}
System.out.println(
MethodHandles.privateLookupIn(WithPrivateFields.class, lookup)
.findVarHandle(WithPrivateFields.class, "referenceField", Object.class)
.get(withPrivateFields));
}
}