0

どこでも読んだ限りでは、Java で動的な名前の変数を作成することはできないため、問題を説明して代替手段があるかどうかを確認します。私の問題は、階層を持つ英語の法律を含む長いテキストを解析する必要があることです。

次のように分けられます。

書籍

----チャプター

--------記事または

書籍

----タイトル

--------チャプター

------------- 記事または

書籍

----タイトル

--------チャプター

-------------セクション

-----------------記事

おわかりのように、構造は状況によって異なります。情報は、次のようなファイルから取得する必要があります。

Book 1: Book One の名前 Title 1: タイトル One の名前 Chapter 1: Chapter 1 の名前 Article 1: 記事 1 の名前 Article 2: 記事 2 の名前 Chapter 2: Chapter 2 の名前 Section 1: Section 1 Article の名前3: 記事の名前 3 タイトル 2: ... 第 1 章: ... ... ブック 2:... .... ブック 3


つまり、テキストには分類がランダムに含まれている可能性があり、最初にすべての章、次にすべての記事などというわけではありません。

これに対して提案されている実装は次のとおりです。

 public class Book {
   private int id;
   private List<Chapter> chapters;
   private List<Title> titles;

   // getters/setters/constructor
}

public class Chapter {
   private int id;
   private List<Section> section;
   private List<Article> articles;

   // getters/setters/constructor
}

public class Title {
   private int id;
   private List<Chapter> chapters;

   // getters/setters/constructor
}

public class Section {
   private int id;
   private List<Article> articles;

   // getters/setters/constructor
}

問題は、リストを動的に作成する必要があることです。これは、パーサーが、ブック番号 n の章の新しいリストが必要であると言ったときです。作成する必要があります。

これどうやってするの?

前もって感謝します

4

1 に答える 1

3

最も簡単な解決策は、それらすべてにインターフェイスを実装させ、Elementインターフェイスに他のElementオブジェクトへの参照を含めることです。

public interface Element {
    List<Element> getSubElements();
}

次に予約します。

public class Book implements Element {
    // Your other stuff
    private List<Element> subElements;

    public void getSubElements() {
        return subElements;
    }
}

最高のポリモーフィズム。

于 2012-09-06T20:27:46.963 に答える