fork(1) download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.lang.invoke.MethodHandle;
  4. import java.lang.invoke.MethodHandles;
  5. import java.lang.invoke.MethodType;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static int i(int i1, Integer i2){
  11. return i1 + i2;
  12. }
  13. public static void tm() throws Throwable {
  14. MethodHandles.Lookup lu = MethodHandles.publicLookup();
  15. MethodType mt = MethodType.methodType(int.class, int.class, int.class);
  16. MethodHandle mh = lu.findStatic(Ideone.class, "i", mt);
  17. System.out.println(mh.invoke(1, 2));
  18. }
  19.  
  20. public static void main(String[] args) throws Throwable {
  21. tm();
  22. }
  23.  
  24. }
Runtime error #stdin #stdout #stderr 0.1s 28080KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Exception in thread "main" java.lang.IllegalAccessException: symbolic reference class is not public: class Ideone, from java.lang.Object/public
	at java.lang.invoke.MemberName.makeAccessException(MemberName.java:850)
	at java.lang.invoke.MethodHandles$Lookup.checkSymbolicClass(MethodHandles.java:1400)
	at java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:1380)
	at java.lang.invoke.MethodHandles$Lookup.findStatic(MethodHandles.java:778)
	at Ideone.tm(Main.java:16)
	at Ideone.main(Main.java:21)