提供類型的變量值我有此類:對於另一個構造
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