据我所读,在 Java 中无法创建具有动态名称的变量,因此我将解释该问题以查看是否有替代方案。我的问题是我必须解析包含英语法律的长文本,它有一个层次结构:
是这样划分的:
书籍
----章节
--------文章 或
书籍
----标题
--------章节
-------------文章 或
书籍
----标题
--------章节
-------------章节
-----------------文章
正如您所知,这取决于具体情况,结构必须有所不同。该信息必须从如下文件中获取:
第一本书:第一本书的名称 标题一:标题一的名称 第1章:第1章名称 第1条:第1条名称 第2条:第2条名称 第2章:第2章名称 第 1 节:第 1 节的名称 第三条:第三条名称 标题 2:... 第1章: ... ... 第 2 册:... .... 第三册
<小时/>所以你明白了,文本可能会随机包含分类,它不像首先是所有章节,然后是所有文章等等。
为此建议的实现是:
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 本书中的新章节列表,我必须创建它。
我该怎么做?
提前致谢
最佳答案
最简单的解决方案是让它们全部实现一个 Element
接口(interface),然后让该接口(interface)包含对其他 Element
对象的引用:
public interface Element {
List<Element> getSubElements();
}
然后预订:
public class Book implements Element {
// Your other stuff
private List<Element> subElements;
public void getSubElements() {
return subElements;
}
}
Polymorphism处于最佳状态。
关于java - 动态名称变量java(解析器创建结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12307830/