簡體   English   中英

為什么Java不抱怨模糊的電話?

[英]Why Java is not complaining about an ambiguous call?

服務接口聲明了兩個顯然執行相同處理的方法:

interface Service<T> {
    <R> R process(Function<? super T, ? extends R> function);
    T process(UnaryOperator<T> operator);
}

上面的服務被調用如下:

void process(Service<CharSequence> service) {
    service.process(sequence -> sequence.subSequence(0, 1));
}

將調用哪種服務方法以及為什么編譯器不會在此上下文中抱怨模糊調用?

當存在多個可能的匹配時,方法解析選擇最具體的匹配方法 由於UnaryOperator<T>擴展了Function<T,T> ,如果lambda匹配它(它確實),它比Function<T, T>更具體Function<T, T>因此將使用UnaryOperator重載。

暫無
暫無

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

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