「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[] {});
}
}
}

}
}

Development

Posted by arkgame