gpt4 book ai didi

java - 字符串列表始终为空

转载 作者:行者123 更新时间:2023-12-01 16:44:16 27 4
gpt4 key购买 nike

我正在尝试将字符串列表初始化为 private static final 但我总是将 l 的值设置为 null,如果我将其声明为第二个代码片段所示,它就可以工作.

我想做的是将我声明的列表的元素添加到特里树中,以便稍后匹配某些模式...

关于第一个示例中为什么出现空值以及如何纠正它有什么想法吗?谢谢

public class Myclass {
public static final Myclass INSTANCE = new Myclass();

private static final List<String> l = Arrays.asList("ofo", "oof", "foo");

private Trie trie;

private Myclass() {
trie = buildTrie();
}

private Trie buildTrie() {
TrieBuilder builder = Trie.builder();
Iterator<String> iterator = l.iterator();
while (iterator.hasNext()) {
builder.addKeyword(iterator.next());
}
return builder.build();
}
}
public class Myclass {
public static final Myclass INSTANCE = new Myclass();
private Trie trie;

private Myclass() {
List<String> l = Arrays.asList("ofo", "oof", "foo");
trie = buildTrie();
}

private Trie buildTrie() {
TrieBuilder builder = Trie.builder();
Iterator<String> iterator = l.iterator();
while (iterator.hasNext()) {
builder.addKeyword(iterator.next());
}
return builder.build();
}
}

最佳答案

public class Myclass {
public static final Myclass INSTANCE = new Myclass();

private static final List<String> l = Arrays.asList("ofo", "oof", "foo");

静态初始化按照声明的顺序完成。这意味着 INSTANCEl 之前初始化,因此 Myclass 的构造函数读取 l 的未初始化值。

颠倒声明的顺序:

public class Myclass {
private static final List<String> l = Arrays.asList("ofo", "oof", "foo");

public static final Myclass INSTANCE = new Myclass();

或者,如果您实际上不需要 l,请考虑将其作为构造函数参数传递。

关于java - 字符串列表始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55741904/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com