使用 javax.tools 编译并在不反射的情况下运行



我是论坛的新手,对Java编码非常陌生。

无论如何,我正在实现我的Java代码来动态编译和运行不同的类,这些类不知道先验的,并且可能随着时间的推移而改变(不太频繁)。我发现这里提出的基于javax的示例非常有用。但是,由于我的工作以后应该实时运行,所以我希望尽可能避免使用Java反射。您知道是否有一种方法可以在不使用再膨胀的情况下运行编译后的代码吗?有一些变量,我可以检索编译后指向类,然后使用它来实例化类?

感谢预付卢卡

嘿,看,我不知道这是对的,还是这是你想要的,但我会这样划分框架…

接口接口只是为了更容易理解。

public interface fun {
void fun();
}

假设有人为你的应用程序或框架编写代码…给他你的界面,并告诉他在那个方法中加入功能。就像这样…

public class TestDestination implements test.fun {
public void fun(){
    System.out.println("Hello");
}
}

那么你所要做的就是加载这个类…你可以从用户输入的XML中获取名称等等。这将是您的执行

public class TestLoad {
public static void main(String[] args) {
    try {
        Class t1 = Class.forName("test.temp.TestDestination");
        fun temp = (fun) t1.newInstance();
        temp.fun();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (InstantiationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
}

我不确定这是否是你想要的…但理想的做法是将加载器保持在一个单独的线程上,并在程序开始时加载你想要的所有类,或者延迟加载它……你的选择希望这对你有所帮助我假设这个类。forName是有效的…

相关内容

  • 没有找到相关文章

最新更新