Java lambda 同格式 歧义消除

xiaoxiao2021-02-28  18

package com.xiuye.lambda; @FunctionalInterface interface Fn1 { default void f() { System.out.println("Fn1 f"); } void g(); } @FunctionalInterface interface Fn2 { void h(); } @FunctionalInterface interface Fn3 { boolean staticFn(); } public class AmbiguousLambda { static void f(Fn1 f1) { f1.f(); f1.g(); } static void f(Fn2 f2) { f2.h(); } static boolean checkReturn(Fn3 f3){ return f3.staticFn(); } public static void main(String[] args) { /** * Ambiguous !!!!! * Exception in thread "main" java.lang.Error: Unresolved compilation * problem: The method f(Fn1) is ambiguous for the type AmbiguousLambda */ // AmbiguousLambda.f(() -> System.out.println("Who called!")); //Solve it Fn1 f1 = ()->System.out.println("Fn1 called!"); Fn2 f2 = ()->System.out.println("Fn2 called!"); AmbiguousLambda.f(f1); AmbiguousLambda.f(f2); System.out.println("static return := "+checkReturn(AmbiguousLambda::retBoolean)); } static boolean retBoolean(){ return true; } }

Fn1 f Fn1 called! Fn2 called! static return := true

转载请注明原文地址: https://www.6miu.com/read-1700205.html

最新回复(0)