gpt4 book ai didi

java - 覆盖方法 - 类变量

转载 作者:行者123 更新时间:2023-11-29 03:38:48 26 4
gpt4 key购买 nike

首先让我说一下,我确实尝试用谷歌搜索这个,但我不太确定我在找什么。我知道我可以使用 setter 方法,但有没有办法直接访问这些字段?

List<String> token = new ArrayList<String>();
List<String> lemma = new ArrayList<String>();
List<String> pos = new ArrayList<String>();

tt.setHandler(new TokenHandler<String>() {
@Override
public void token(final String token, final String pos, final String lemma) {
this.token.add(token); // cannot be resolved or is not a field
this.lemma.add(lemma); // cannot be resolved or is not a field
this.pos.add(pos); // cannot be resolved or is not a field
}
});

你能帮帮我吗?!

谢谢!

鲍勃

最佳答案

使用关键字 this在变量前面,表示要访问实例字段。在这种情况下,您想要访问的字段属于匿名类实例 new TokenHandler<String>() { //... } .由于它们未在匿名类中声明,因此编译器无法解析它们。这就是为什么您可能会收到错误的原因。添加关键字 final并在没有 this 的情况下访问变量-关键字:

final List<String> tokens = new ArrayList<String>();
final List<String> lemmas = new ArrayList<String>();
final List<String> positions = new ArrayList<String>();

tt.setHandler(new TokenHandler<String>() {
@Override
public void token(final String token, final String pos, final String lemma) {
tokens.add(token);
lemmas.add(lemma);
positions.add(pos);
}
});

有关您为什么需要 final 的更多信息见this问题。

编辑:

另外,请注意歧义名称(参数列表与方法变量)。

关于java - 覆盖方法 - 类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14141111/

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