final List<Tags> tags = new ArrayList<>();
public void startUp() {
//load tags from Config text box
reloadTags();
}
@Getter
@ToString
@EqualsAndHashCode
static class Tags
{
private final String tag;
private final String value;
//recursive error comes from here
Tags(String tag, String value)
{
this(tag, value);
}
}
//detect change in Config textbox, update tags
@Subscribe
public void onConfigChanged(ConfigChanged configChanged) {
if (configChanged.getGroup().equals("calculatorpro")) {
reloadTags();
}
}
//clear current Tags list & update with new tags from Config Text box
private void reloadTags()
{
tags.clear();
tags.addAll(loadTags(config.customTags()));
}
//load tags from Config text box
private Collection<? extends Tags> loadTags(String textbox)
{
List<Tags> swaps = new ArrayList<>();
for (String line : textbox.split("\n"))
{
if (line.trim().equals("")) continue;
String[] split = line.split("=");
swaps.add(new Tags(
split[0].toLowerCase().trim(),
split.length > 1 ? split[1].toLowerCase().trim() : ""
));
}
return swaps;
}
我得到错误:“java:recursive constructor invocation”from my“static class Tags”class.
我尝试创建一个标签名称和值的列表,这是我从用户文本框(config.customTags())中获得的。它们将以tag=value(oak=255)的形式作为字符串输入。当在文本框中检测到更改时,旧列表将被清除,并使用文本框的新内容创建一个新列表(在函数loadTags中完成)。
代码实际上是由其他人创建的另一个文件,我只是采取了适合我的目的的部分,但实际内容是相同的,但更改了名称,所以我不知道为什么他们的作品,而不是递归的,但我的不工作,是递归的?Here是他们的代码的链接(在他们的代码中有很多额外的功能,我不使用我的)。
我是一个初学者程序员(这是我的第一个Java程序!),所以任何人都可以提供的任何信息将是伟大的!(我也很抱歉,如果我遗漏了任何相关的信息,我试图只分享与错误相关的内容)
1条答案
按热度按时间kq4fsx7k1#
构造函数正在调用自身:
如果编译器允许这样做,构造函数在被调用时将进入无限循环。
重写它以简单地从给定参数初始化两个字段,如下所示: