aclement пре 13 година
родитељ
комит
5d6a3acb74
1 измењених фајлова са 13 додато и 13 уклоњено
  1. 13
    13
      util/src/org/aspectj/util/Reflection.java

+ 13
- 13
util/src/org/aspectj/util/Reflection.java Прегледај датотеку

//import java.util.StringTokenizer; //import java.util.StringTokenizer;


public class Reflection { public class Reflection {
public static final Class[] MAIN_PARM_TYPES = new Class[] {String[].class};
public static final Class<?>[] MAIN_PARM_TYPES = new Class[] {String[].class};


private Reflection() { private Reflection() {
} }
public static Object invokestaticN(Class class_, String name, Object[] args) {
public static Object invokestaticN(Class<?> class_, String name, Object[] args) {
return invokeN(class_, name, null, args); return invokeN(class_, name, null, args);
} }


public static Object invoke(Class class_, Object target, String name, Object arg1, Object arg2) {
public static Object invoke(Class<?> class_, Object target, String name, Object arg1, Object arg2) {
return invokeN(class_, name, target, new Object[] { arg1, arg2 }); return invokeN(class_, name, target, new Object[] { arg1, arg2 });
} }
public static Object invoke(Class class_, Object target, String name, Object arg1, Object arg2, Object arg3) {
public static Object invoke(Class<?> class_, Object target, String name, Object arg1, Object arg2, Object arg3) {
return invokeN(class_, name, target, new Object[] { arg1, arg2, arg3 }); return invokeN(class_, name, target, new Object[] { arg1, arg2, arg3 });
} }
public static Object invokeN(Class class_, String name, Object target, Object[] args) {
public static Object invokeN(Class<?> class_, String name, Object target, Object[] args) {
Method meth = getMatchingMethod(class_, name, args); Method meth = getMatchingMethod(class_, name, args);
try { try {
return meth.invoke(target, args); return meth.invoke(target, args);
} }




public static Method getMatchingMethod(Class class_, String name, Object[] args) {
public static Method getMatchingMethod(Class<?> class_, String name, Object[] args) {
Method[] meths = class_.getMethods(); Method[] meths = class_.getMethods();
for (int i=0; i < meths.length; i++) { for (int i=0; i < meths.length; i++) {
Method meth = meths[i]; Method meth = meths[i];




public static Object getStaticField(Class class_, String name) {
public static Object getStaticField(Class<?> class_, String name) {
try { try {
return class_.getField(name).get(null); return class_.getField(name).get(null);
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
InvocationTargetException, ClassNotFoundException { InvocationTargetException, ClassNotFoundException {
LangUtil.throwIaxIfNull(className, "class name"); LangUtil.throwIaxIfNull(className, "class name");
if (LangUtil.isEmpty(classpath)) { if (LangUtil.isEmpty(classpath)) {
Class mainClass = Class.forName(className);
Class<?> mainClass = Class.forName(className);
runMainInSameVM(mainClass, args); runMainInSameVM(mainClass, args);
return; return;
} }
ArrayList dirs = new ArrayList();
ArrayList libs = new ArrayList();
ArrayList urls = new ArrayList();
ArrayList<File> dirs = new ArrayList<File>();
ArrayList<File> libs = new ArrayList<File>();
ArrayList<URL> urls = new ArrayList<URL>();
String[] entries = LangUtil.splitClasspath(classpath); String[] entries = LangUtil.splitClasspath(classpath);
for (int i = 0; i < entries.length; i++) { for (int i = 0; i < entries.length; i++) {
String entry = entries[i]; String entry = entries[i];
} }
} }
UtilClassLoader loader = new UtilClassLoader(urls, dirs); UtilClassLoader loader = new UtilClassLoader(urls, dirs);
Class targetClass = null;
Class<?> targetClass = null;
try { try {
targetClass = loader.loadClass(className); targetClass = loader.loadClass(className);
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
main.invoke(null, new Object[] { args }); main.invoke(null, new Object[] { args });
} }
public static void runMainInSameVM(Class mainClass, String[] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
public static void runMainInSameVM(Class<?> mainClass, String[] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
LangUtil.throwIaxIfNull(mainClass, "main class"); LangUtil.throwIaxIfNull(mainClass, "main class");
Method main = mainClass.getMethod("main", MAIN_PARM_TYPES); Method main = mainClass.getMethod("main", MAIN_PARM_TYPES);
main.invoke(null, new Object[] { args }); main.invoke(null, new Object[] { args });

Loading…
Откажи
Сачувај