Java Generics:即使类型匹配,也无法使用所述泛型调用函数

时间:2018-03-14 15:57:51

标签: java android generics

我有这个代码,我用泛型定义了两个类。  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;
        }
    }
}

2 个答案:

答案 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);