簡體   English   中英

無法推斷Java 8的功能接口類型

[英]Cannot infer functional interface type Java 8

我有一個工廠(注冊表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);
            }
        };
    }

但我不斷得到無法推斷功能接口類型錯誤。 我在這做錯了什么?

您的defaultSupplier方法的參數類型為Class 您不能傳遞一個lambda表達式,其中需要一個Class 但是你無論如何都不需要那個方法defaultSupplier

由於TestTestWithArgsValidation的子類型,因此lambda表達式() -> 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));
    }    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM