我有这个代码,我用泛型定义了两个类。 1.可以具有通用类型数据的部分。 2.配置使用各种构建器模式并存储这些部分的列表。
运行此代码时会出现编译错误,我无法理解原因。我已经提到了类型。
错误:不兼容的类型:java.util.List>无法转换为java.util.List>
public class Main {
public static void main(String[] args) {
Section<String> section = new Section<>("wow");
List<Section<String>> sections = new ArrayList<>();
sections.add(section);
Config<String> config = new Config<>().setSections(sections);
}
public static class Section<T> {
private T data;
public Section(T data) {
this.data = data;
}
public T getData() {
return data;
}
}
public static class Config<T> {
private List<Section<T>> sections;
public Config() {
}
public Config<T> setSections(List<Section<T>> sections) {
this.sections = sections;
return this;
}
}
}
答案 0 :(得分:2)
问题出在第7行,您正在创建新的配置并在同一行上调用 setSections 。
所以解决方案是两个:
明确类型:
Config<String> config = new Config<String>().setSections(sections);
拆分操作:
Config<String> config = new Config<>();
conf.setSections(sections);
答案 1 :(得分:2)
这是编译器的特性,你必须写
Config<String> config = new Config<String>().setSections(sections);