提供类型的变量值我有此类:对于另一个构造
public class Test<T> {
public Test() {
this(() -> true); // error here
}
public Test(Supplier<T> c) {
}
}
编译失败,此错误:
Error:(23, 24) java: incompatible types: bad return type in lambda expression
boolean cannot be converted to T
唯一的解决方法,我发现使用静态工厂方法:
public static Test<Boolean> makeDefault() {
return new Test<>(() -> true);
}
是否有任何方法可以让构造函数不包含某些类型变量来调用另一个类型变量wh ich呢?为什么这个限制?
编辑: 我的用例:我有一个类可选keyExtractor
。键类型是类型参数之一。如果用户不提供keyExtractor
,我只使用一个返回任何常量非空值。
类型变量不属于构造函数。它属于类型(在实例上下文中)。 –
编辑我的答案以修复术语。但为什么不编译? – Oliv
我发现了一个解决办法:投将原始类型:'这((供应商)() - > TRUE);'。但为什么? – Oliv