import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Main {
public static void main
(String[] args
) { One one = new One();
Class<?> clazz = one.getClass();
try {
Field twoField
= clazz.
getField("two"); twoField.setAccessible(true);
Class<?> twoClazz =Class.forName(twoField.getType().getName());
Method method
= twoClazz.
getMethod("hello",
null);
method.invoke(twoClazz.newInstance(), null);
e.printStackTrace();
}
}
public static class One {
public Two two = new Two();
}
public static class Two {
public void hello(){
}
}
}
aW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LkZpZWxkOwppbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsKaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsKCnB1YmxpYyBjbGFzcyBNYWluIHsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgT25lIG9uZSA9IG5ldyBPbmUoKTsKICAgICAgICBDbGFzczw/PiBjbGF6eiA9IG9uZS5nZXRDbGFzcygpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIEZpZWxkIHR3b0ZpZWxkID0gY2xhenouZ2V0RmllbGQoInR3byIpOwogICAgICAgICAgICB0d29GaWVsZC5zZXRBY2Nlc3NpYmxlKHRydWUpOwogICAgICAgICAgICBDbGFzczw/PiB0d29DbGF6eiA9Q2xhc3MuZm9yTmFtZSh0d29GaWVsZC5nZXRUeXBlKCkuZ2V0TmFtZSgpKTsKCiAgICAgICAgICAgIE1ldGhvZCBtZXRob2QgPSB0d29DbGF6ei5nZXRNZXRob2QoImhlbGxvIiwgbnVsbCk7CgogICAgICAgICAgICBtZXRob2QuaW52b2tlKHR3b0NsYXp6Lm5ld0luc3RhbmNlKCksIG51bGwpOwogICAgICAgIH0gY2F0Y2ggKE5vU3VjaEZpZWxkRXhjZXB0aW9uIHwgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiB8IEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24gfCBOb1N1Y2hNZXRob2RFeGNlcHRpb24gfCBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHwgSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgfQogICAgfQoKCiAgICBwdWJsaWMgc3RhdGljIGNsYXNzIE9uZSB7CiAgICAgICAgcHVibGljIFR3byB0d28gPSBuZXcgVHdvKCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBjbGFzcyBUd28gewogICAgICAgIHB1YmxpYyB2b2lkIGhlbGxvKCl7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGVsbG8iKTsKICAgICAgICB9CiAgICB9Cn0=