1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| public class TestInner {
Object o;
public void test(String a){
final String test = a;
class Inner {
String param;
public Inner(String param){
this.param=param;
}
public String doTest(){
return test+" -> "+param;
}
}
String test2 = "12345";
Inner in = new Inner(test2);
o = in;
System.out.println(in.doTest());
}
public static void main(String[] argv){
try {
TestInner in = new TestInner();
in.test("blablabla");
System.out.println(in.o.getClass());
Constructor c = in.o.getClass().getDeclaredConstructors()[0];
Method m = in.o.getClass().getMethod("doTest");
System.out.println(m.invoke(c.newInstance(in,"444","719")));
} catch (InstantiationException ex) {
Logger.getLogger(TestInner.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(TestInner.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalArgumentException ex) {
Logger.getLogger(TestInner.class.getName()).log(Level.SEVERE, null, ex);
} catch (InvocationTargetException ex) {
Logger.getLogger(TestInner.class.getName()).log(Level.SEVERE, null, ex);
} catch (NoSuchMethodException ex) {
Logger.getLogger(TestInner.class.getName()).log(Level.SEVERE, null, ex);
} catch (SecurityException ex) {
Logger.getLogger(TestInner.class.getName()).log(Level.SEVERE, null, ex);
}
}
} |
Partager