2012-02-10 10 views
1

私は答えがわからない質問があります。Javaクラスに自動的に生成されたメソッドを含める

私はMySQLデータベースのテーブルの内容に基づいて自動的にJavaメソッドを生成するサーバー上にPHPスクリプトを持っています。スクリプトは、このメソッドが保存されている.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.私のデザインパターンの講義ノートを確認する:) –

0

SmartyのようなPHPテンプレートエンジンを使用して、完全なJavaクラスを作成できます。主なクラスは、生成されたメソッドのプレースホルダを持つテンプレートになります。

1

実際には、Java ScriptEngine(JSR 223で説明)のようなものを使用することを検討する必要があります。例はhereです。

Java用のLUA統合もあります。

1

生成されたコードと手作業で書かれたコードを別々のファイルに保存するのが理想的です。そのようにして、あなたはあなたがしていることをする必要はありません。 Aasmundの提案を使用してください。それが正しい方法です。これを可能にするためにコードを再構成しなければならないかもしれませんが、後でよりも良いでしょう。

私は余分なマイルや使用のインターフェイスを行くように頼むでしょう。生成されたコードはインターフェイスを実装する必要があり、手動コードはインターフェイスだけを使用してすべてを参照する必要があります。インスタンスを返すFactoryを持つことができます。

これは、あなたが手動コードと生成されたコードのあなたのデカップリングを向上させることができます。私は、DAO(データアクセスオブジェクト)パターンをある程度使用していると思います。 DAOパターンは、生成されたコードを別々にしておき、インターフェイスを使用してアクセスする場合に最適です。インターフェイスを使用すると、ユニットテストを実行するなど、実行時にDAOの実装を何かに変更することができます。

関連する問題