如何在Java代码中包含文件文本? 似乎没有设置Java来做我以前在C++中做的事情(这没什么大不了的)。我有一组从另一个应用程序生成的规则(一系列if-then检查)。这些规则不时地改变,所以在C++中我会这样做: double variableForRules=1; bool condition=false; #include "rules.out"; if(condition) //do something

如何在Java代码中包含文件文本? 似乎没有设置Java来做我以前在C++中做的事情(这没什么大不了的)。我有一组从另一个应用程序生成的规则(一系列if-then检查)。这些规则不时地改变,所以在C++中我会这样做: double variableForRules=1; bool condition=false; #include "rules.out"; if(condition) //do something,java,Java,本质上,if-then签入rules.out将使用“variableForRules”(和其他几个变量)来决定是否将条件设置为true。如果在规则求值后将其设置为true,则程序将执行某些操作 在Java中有类似的方法吗?或者我唯一的选择是rules.out实际上是需要实例化的整个类,等等 谢谢 因为Java中没有预处理器,所以不能这样做。正如您所说,您必须在类中实现您的逻辑。也许您可以使用脚本实现。您可以查看.因为您正在自动生成rules.out,所以您也可以自动生成Java函数。希望添加该功

本质上,if-then签入rules.out将使用“variableForRules”(和其他几个变量)来决定是否将条件设置为true。如果在规则求值后将其设置为true,则程序将执行某些操作

在Java中有类似的方法吗?或者我唯一的选择是rules.out实际上是需要实例化的整个类,等等


谢谢

因为Java中没有预处理器,所以不能这样做。正如您所说,您必须在类中实现您的逻辑。

也许您可以使用脚本实现。您可以查看.

因为您正在自动生成rules.out,所以您也可以自动生成Java函数。希望添加该功能不会太痛苦。

在Java中,其他应用程序通常会将规则保存到.xml或.properties文件中,然后让Java读入该文件。

rules.out实际上必须是一个完整的类,需要实例化才能执行代码

由于rules.out是由第三方应用程序生成的,所以最好编写自己的
CppToJavaTransformer
,将文件
rules.out
读取为输入并生成
rules.java
。这假设
rules.out
在编译时之前可用,而
rules.java将在编译时使用。这样做的缺点是需要进行额外的转换


或者,您可以编写解释rules.out的代码,并使用内省执行所需的指令。这很难,但rules.out也可以在运行时更改

即使可以包含规则文件,也没有任何帮助。正如你所说,你的规则是动态的。看起来您的java代码需要更改以适应不同的场景。

您可以尝试使用(请参阅:按名称创建新对象和调用方法)

首先以当前构建Rules.out的方式生成Rules.java并编译它

然后在运行时以JDBC驱动程序传统加载方式将类文件加载到应用程序中

Class clazz = Class.forName("com.mydomain.Rules");

如果你的应用程序运行很长时间(比单个Rules.class文件的生命周期更长),那么你必须创建自己的类加载器,以便在单个运行时交换底层类。

没有标准的预处理器,但有一些预处理器可以与Java源代码一起工作。是的。。。但是对于这样简单的事情,你最好避免依赖于第三方预处理器。所以规则是C++代码,对吧?它是手工生成的还是自动生成的?它是自动生成的,尽管我可以让它自动生成任何东西。我希望有一个更简单的方法来做,类似于C++,但是听起来只有这样一种方法来自动生成完整的类。或者直接用BeaSebe或Groovy生成它,它可以解释java代码而不需要一个类。我认为只有“C++规则”才是困难的。除此之外,在开始和结束时拍打一些样板Java代码应该很简单。如果规则已经是有效的Java(或close),那么“可选”可能只是设置Groovy或Beanshell直接执行规则文件的问题。很久以前我在beanshell也做过类似的事情。