首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java泛型类型不匹配错误

Java泛型类型不匹配错误
EN

Stack Overflow用户
提问于 2015-07-02 14:09:55
回答 3查看 282关注 0票数 5

我有一个具有构造函数签名的类,如下所示:

代码语言:javascript
运行
复制
public class MyClass <U>{
    public <T> MyClass(Set<T> data, Function<T,U> func)...
}

这很好。但是我想重载构造函数,因为如果您不提供函数func,它将只使用(item)->{return item;}。我编写了另一个构造函数,如下所示:

代码语言:javascript
运行
复制
public <T> MyClass(Set<T> data){
    this(
      data,
      (item)->{return item;}
    );
}

这会导致类型错配错误,因为我作为参数提供给构造函数的函数接受T类型的值,并返回相同的值,应该是U。我不明白为什么代数型系统看不到,在这种情况下,U和T是相同的,这没关系?

EN

Stack Overflow用户

回答已采纳

发布于 2015-07-02 14:15:06

系统必须假定T和U是两种不同的类型,因为您给它们取了两个不同的名称。但是,您可以从第二个ctor中删除额外的泛型类型,如下所示:

代码语言:javascript
运行
复制
public class MyClass <U>{
    public <T> MyClass(Set<T> data, Function<T,U> func) {...}
    public MyClass(Set<U> data){
        this(
          data,
          (item)->{return item;}
        );
    }
}
票数 7
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31186885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档