static Object call(Class c, String method, Object... args) ctex { Method m = call_findStaticMethod(c, method, args); m.setAccessible(true); return m.invoke(null, args); } static Object call(Object o, String method, Object... args) ctex { Method m = call_findMethod(o, method, args); m.setAccessible(true); return m.invoke(o, args); } static Method call_findMethod(Object o, String method, Object[] args) { // TODO: go to superclasses too for (Method m : o.getClass().getDeclaredMethods()) if (m.getName().equals(method) && (m.getModifiers() & Modifier.STATIC) == 0 && m.getParameterTypes().length == args.length) // TODO: multicast return m; throw new RuntimeException("Method '" + method + "' with " + args.length + " parameter(s) not found in " + o.getClass().getName()); } static Method call_findStaticMethod(Class<?> c, String method, Object[] args) { for (Method m : c.getDeclaredMethods()) if (m.getName().equals(method) && (m.getModifiers() & Modifier.STATIC) != 0 && m.getParameterTypes().length == args.length) // TODO: multicast return m; throw new RuntimeException("Static method '" + method + "' with " + args.length + " parameter(s) not found in " + c.getName()); }
Snippet is not live.
Travelled to 12 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #2000492 |
Snippet name: | call function(s) for reflective calls (e.g. to hotwired objects) |
Eternal ID of this version: | #2000492/1 |
Text MD5: | 54565f37057521dd8e889d1c4b88eecf |
Author: | stefan |
Category: | |
Type: | New Tinybrain snippet |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2015-08-03 01:10:00 |
Source code size: | 1300 bytes / 26 lines |
Pitched / IR pitched: | No / Yes |
Views / Downloads: | 635 / 183 |
Referenced in: | [show references] |