【发布时间】:2020-04-16 10:08:53
【问题描述】:
我有这个抽象类:
public abstract class Hotel {
protected List<String> defaultValues() {
return List.of("Geeks", "For", "Geeks");
}
}
还有这个从抽象类扩展而来的龙目岛类:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
public class Hostel extends Hotel {
private List<String> values = defaultValues();
@SuppressWarnings("unused")
public static class HosteBuilder {
public Hostel build() {
this.values.add("ww");
...
}
}
}
但我在values.add("ww"); 行中得到一个空指针
【问题讨论】:
-
这甚至不应该编译。
-
defaultValues()返回一个 不可变 列表。为什么你认为你可以添加它?不可变意味着某些东西不能改变。增加就是改变。 -
HosteBuilder不能使用Hostel的字段values,因为它是一个静态内部类。它不包含对封闭类的引用。 -
我不想听起来粗鲁,但lombok 不是 Java 初学者工具。在开始使用 lombok 之前,您应该真正熟悉所有 Java 编程语言结构,尤其是当您使用更复杂的 lombok 功能(如
@Builder)时。此外,当您必须抑制警告时,在大多数情况下,这表明出现了问题。在这里,您的构建器类名称中有错字。
标签: java nullpointerexception lombok intellij-lombok-plugin