0

据我在任何地方都读过,您无法在 Java 中创建具有动态名称的变量,因此我将解释该问题以查看是否有替代方法。我的问题是我必须解析一个包含英文法律的长文本,它有一个层次结构:

它是这样划分的:

图书

----章节

--------文章或

图书

----标题

--------章节

-------------文章或

图书

----标题

--------章节

-------------部分

-----------------文章

如您所知,它取决于情况,结构必须有所不同。信息必须取自如下文件:

第一卷:第一卷名称 第一卷:第一卷名称 第 1 章:第 1 章名称 第 1 条:第 1 条名称 第 2 条:第 2 条名称 第 2 章:第 2 章名称 第 1 条:第 1 条名称 条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 回答