【问题标题】:Include automatically generated methods in a java class在 java 类中包含自动生成的方法
【发布时间】:2012-03-02 20:28:44
【问题描述】:

我有一个不确定是否可以回答的问题。

我在服务器上有一个 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";
}

我不确定这是否可行,但如果可以,那就太好了。

【问题讨论】:

    标签: java methods include external


    【解决方案1】:

    您最好将生成的代码和手动编写的代码保存在单独的文件中。这样你就不必做你正在做的事情了。使用 Aasmund 的建议。这是正确的方法。您可能需要重新构建您的代码以实现这一点,但现在总比以后好。

    我会要求您加倍努力并使用界面。您生成的代码应该实现一个接口,并且您的手动代码应该仅使用该接口引用所有内容。你可以有一个返回实例的工厂。

    这将允许您增加手动代码和生成代码的解耦。我认为您正在做的是在一定程度上使用 DAO(数据访问对象)模式。如果您将生成的代码分开并使用接口访问它,那么 DAO 模式效果最好。使用接口将允许您在运行时将 DAO 的实现更改为其他内容 - 例如运行单元测试。

    【讨论】:

      【解决方案2】:

      您真的应该考虑使用 Java ScriptEngine 之类的东西(在 JSR 223 中描述)。例子可以在here找到。

      还有用于 Java 的 LUA 集成。

      【讨论】:

        【解决方案3】:

        您可以使用像Smarty 这样的PHP 模板引擎来创建完整的Java 类。您的主类将是您的模板,其中包含生成方法的占位符。

        【讨论】:

          【解决方案4】:

          Java 中没有“包含文件”功能。我建议你改为生成这个:

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

          然后这样称呼它:

          GeneratedClass.externalMethod();
          

          这样,手写文件和生成的文件可以完全分开。

          【讨论】:

          • 感谢大家的快速响应。我会尝试上述方法并做出回应。我还将查看其他建议以供将来使用。第 1 步:复习我的设计模式讲义 :)
          猜你喜欢
          • 1970-01-01
          • 2012-02-15
          • 2020-12-20
          • 2011-10-23
          • 2016-11-19
          • 2016-01-04
          • 2019-01-08
          • 2014-09-09
          • 2012-12-24
          相关资源
          最近更新 更多