java - 动态名称变量java(解析器创建结构)

标签 java class variables dynamic linked-list

据我所读,在 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/

相关文章:

javascript - 如何根据字符串值实例化对象

c# - 如何使用不同类型进行类型转换

javascript - 将 javascript 变量发送到经典的 asp

java - 我如何确定我的内存游戏中的哪个方 block 被按下了?

java - 循环语句后未调用代码

Java 应用程序分析

javascript - 无法在 forEach 循环 JavaScript 之外访问变量

java - 使用JSlider移动JScrollPanel?

Ruby - 如何在没有 .new 的情况下创建 MatchData 对象?

java - 如何在 Javafx 中为 XML 文件创建常量变量