mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-03 04:44:53 +07:00
PR#2804 Reviewed-by: Tagir Valeev <tagir.valeev@jetbrains.com> GitOrigin-RevId: 28a1abe7b3d83e40737df88c5ce1d39933858755
19 lines
1.5 KiB
Java
19 lines
1.5 KiB
Java
import java.lang.invoke.MethodHandle;
|
|
import java.lang.invoke.MethodHandles;
|
|
import java.lang.invoke.MethodType;
|
|
import java.lang.invoke.VarHandle;
|
|
|
|
class SignaturePolymorphic {
|
|
public static void main(String... args) throws Throwable {
|
|
// signature polymorphic methods allow any lookup, do not warn
|
|
MethodHandles.lookup().findVirtual(MethodHandle.class, "invoke", MethodType.methodType(int.class, String.class, double.class));
|
|
MethodHandles.lookup().findVirtual(VarHandle.class, "compareAndSet", MethodType.methodType(int.class, String.class, double.class));
|
|
// static lookup still warns as the methods are virtual
|
|
MethodHandles.lookup().<warning descr="Method 'invoke' is not static">findStatic</warning>(MethodHandle.class, "invoke", MethodType.methodType(int.class, String.class, double.class));
|
|
MethodHandles.lookup().<warning descr="Method 'compareAndSet' is not static">findStatic</warning>(VarHandle.class, "compareAndSet", MethodType.methodType(int.class, String.class, double.class));
|
|
// unrelated methods in the relevant classes cause warnings
|
|
MethodHandles.lookup().findVirtual(MethodHandle.class, "toString", <warning descr="Cannot resolve method 'int toString(String, double)'">MethodType.methodType(int.class, String.class, double.class)</warning>);
|
|
MethodHandles.lookup().findVirtual(VarHandle.class, "toString", <warning descr="Cannot resolve method 'int toString(String, double)'">MethodType.methodType(int.class, String.class, double.class)</warning>);
|
|
}
|
|
}
|