因此,我在 javascript 中实例化了一个新类,然后将其添加到列表中……稍后我遍历列表并再次实例化所有类,以使用它们。
Javascript:
var BPmanager = Java.type('paperVS.tabs.blueprint.BlueprintManager');
var abstractFunction= Java.extend(Java.type('paperVS.logic.function.Function'));
var getYPos = new abstractFunction("getYPos") {
//Some Functions
}
BPmanager.allFunctions.add(getYPos);
及以后在 Java 中:
for (Function fun : allFunctions) {
try {
Class<?> c = Class.forName(fun.getclass().getName());
Object object = c.newInstance();
instances.add((Function)object);
} catch (Exception e) {
e.printStackTrace();
}
}
例外:
java.lang.ClassnotFoundException: jdk.nashorn.javaadapters.paperVS_logic_function_Function
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at paperVS.tabs.blueprint.BlueprintManager.getFromList(BlueprintManager.java:176)
此代码适用于除 Javascript 类之外的所有类。 Javascript 工作正常(加载和执行单个实例),但不能实例化类。普通的 ClassLoader 做同样的事情