2012-02-10 56 views
1

我有一个问题,我不确定是否可以回答。在java类中包含自动生成的方法

我有一个服务器上的php脚本,它会根据MySQL数据库中的表内容自动生成一个java方法。该脚本创建一个保存此方法的.java文件。

然后我下载这个方法,并将该方法复制并粘贴到我的主要Java类中。我认为这是一个不必要的步骤。有没有办法将方法包含在java类中,而不是复制和粘贴。

我正在寻找在java类中应该复制和粘贴方法的地方写入method.java文件的引用。

喜欢的东西:

public class ShowAlert { 
      public void showAlert(String toast) throws IOException { 
    System.out.println("alert = "+externalMethod()); 
    } 

    include(externalMethod.java); 

} 

然后externalMethod.java具有

public String externalMethod(){ 
return "hello world"; 
} 

我不知道这是可能的,但是这将是巨大的,如果它是。

回答

2

Java中没有“包含文件”工具。我建议你生成这个:

public class GeneratedClass {  
    public static String externalMethod(){ 
     return "hello world"; 
    } 
} 

,并调用它像这样:

GeneratedClass.externalMethod(); 

这样,手写文件,生成的文件可能是完全独立的。

+0

感谢大家的快速响应。我会尝试以上并作出回应。我也会看看未来的其他建议。第1步。查看我的设计模式讲义备注:) – 2012-02-10 11:13:30

0

您可以使用像Smarty这样的PHP模板引擎来创建完整的java类。您的主类将是您的模板,并带有生成方法的占位符。

1

你应该真的考虑使用类似Java ScriptEngine(在JSR 223中描述)。例子可以发现here

还有用于Java的LUA集成。

1

您最好将生成的代码和手动编写的代码保存在单独的文件中。这样你就不必做你正在做的事情。使用阿斯蒙德的建议。这是正确的路要走。你可能不得不重构你的代码以允许这样做,但现在比以后更好。

我会问你去额外的一英里,并使用接口。您生成的代码应该实现一个接口,并且您的手动代码应该仅使用接口引用所有内容。你可以有一个返回实例的工厂。

这将允许您增加手动代码与生成代码的分离。我想你会在一定程度上使用DAO(数据访问对象)模式。如果您将生成的代码单独保存并使用接口访问它,则DAO模式效果最佳。使用接口将允许您在运行时将DAO的实现更改为其他内容 - 例如运行单元测试。