[解決済み] 機能インターフェイスの型を推論できない Java 8
2022-02-18 18:48:01
質問
クラスを初期化するファクトリー(Registry DP)を持っています。
public class GenericFactory extends AbstractFactory {
public GenericPostProcessorFactory() {
factory.put("Test",
defaultSupplier(() -> new Test()));
factory.put("TestWithArgs",
defaultSupplier(() -> new TestWithArgs(2,4)));
}
}
interface Validation
Test implements Validation
TestWithArgs implements Validation
そしてAbstractFactoryでは
protected Supplier<Validation> defaultSupplier(Class<? extends Validation> validationClass) {
return () -> {
try {
return validationClass.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException("Unable to create instance of " + validationClass, e);
}
};
}
しかし、私はCannot infer functional interface type Errorを取得し続けます。私はここで何が間違っているのですか?
どうすればいいですか?
あなたの
defaultSupplier
メソッドの引数の型は
Class
. ラムダ式に
Class
が期待されます。しかし、あなたはそのメソッドを必要としない
defaultSupplier
のように、とにかく
から
Test
と
TestWithArgs
のサブタイプです。
Validation
の場合、ラムダ式は
() -> new Test()
と
() -> new TestWithArgs(2,4)
にはすでに割り当て可能です。
Supplier<Validation>
このメソッドなしでも
public class GenericFactory extends AbstractFactory {
public GenericPostProcessorFactory() {
factory.put("Test", () -> new Test());
factory.put("TestWithArgs", () -> new TestWithArgs(2,4));
}
}
関連
-
[解決済み】Javaで無限大を実装する方法とは?
-
[解決済み] "java.nio.charset.MalformedInputException" を避けるために、すべての包括的なCharset。入力の長さ= 1"?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Java 8 List<V> を Map<K, V> に変換する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javaパッケージが存在しないエラー
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み】Java JDK - doubleからintへの非可逆変換の可能性
-
[解決済み】Javaで無限大を実装する方法とは?
-
[解決済み】「java -cp」と「java -jar」の違い?
-
[解決済み】破損したjarファイル
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件