「java言語入門」Javaのprivateメッソッドを呼び出す方法
1.ファイル名:
TheVictim.java
参考コード:
package net.startnews24.demo;
public class TheVictim {
private void startnews24Test() {
System.out.println(“startnews24Test called");
}
private static void startnews24TestStatic() {
System.out.println(“startnews24TestStatic called");
}
}
2.ファイル名:
startnews24Test.java
参考コード:
package net.startnews24.demo;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class startnews24Test {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
Class c = TheVictim.class;
Method[] ms = c.getDeclaredMethods();
for (Method each : ms) {
String methodName = each.getName();
each.setAccessible(true); // これが鍵となる
if (Modifier.isPrivate(each.getModifiers())) {
if (Modifier.isStatic(each.getModifiers())) {
// static関数はインスタンスを呼び出す必要ない
each.invoke(TheVictim.class, new Object[] {});
} else {
each.invoke(new TheVictim(), new Object[] {});
}
}
}
}
}