我正在为类项目创建一个正则表达式解析器,我遇到了一个我无法弄清楚如何修复的问题.每当遇到带括号的组时,都应该在groupsArrayList中添加一个占位符,然后可以从String中捕获一个组.问题是它每次尝试添加到此ArrayList时都会抛出NullPointerException.这是Segment构造函数,发生这种情况:
public Segment(String value, boolean capture) throws ParseException {
values = new ArrayList<>();
parse(value);
minimum = 1;
maximum = 1;
matchNot = false;
captureGroup = capture;
if (capture) {
RegexGUI.input.groups.add(""); //error occurs on this line
}
}
Run Code Online (Sandbox Code Playgroud)
注意,RegexGUI.input指的是Regex构造函数所在的相关实例:
public Regex(String value) throws ParseException {
this.value = value;
segments = new ArrayList<>();
groups = new ArrayList<>();
anchorStart = false;
anchorEnd = false;
tokenize(value, true, false);
}
Run Code Online (Sandbox Code Playgroud)
如您所见,groups在构造函数中显然已初始化.此外,Segment构造函数仅在类的tokenize()方法中调用 …