gpt4 book ai didi

Java 通用类型不匹配错误

转载 作者:搜寻专家 更新时间:2023-10-31 19:27:28 26 4
gpt4 key购买 nike

我有一个构造函数签名如下的类:

public class MyClass <U>{
public <T> MyClass(Set<T> data, Function<T,U> func)...
}

没关系。但是我想重载构造函数,因为如果您不提供 Function func,它将只使用 (item)->{return item;}。我写了另一个构造函数,看起来像这样:

public <T> MyClass(Set<T> data){
this(
data,
(item)->{return item;}
);
}

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

最佳答案

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

public class MyClass <U>{
public <T> MyClass(Set<T> data, Function<T,U> func) {...}
public MyClass(Set<U> data){
this(
data,
(item)->{return item;}
);
}
}

关于Java 通用类型不匹配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31186885/

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