Tag: method

Java 8消费者/functionLambda歧义

我有一个重载方法,它分别接受一个Consumer和一个Function对象,并返回一个匹配相应的Consumer / Function的generics类型。 我认为这样会好,但是当我尝试使用lambda表达式调用任一方法时,我得到一个错误,指示对该方法的引用是不明确的。 基于我对JLS§15.12.2.1的阅读。 确定可能适用的方法:似乎编译器应该知道我的带有void块的lambda与Consumer方法匹配,而我的带有返回类型的lambda与Function方法匹配。 我把以下无法编译的示例代码放在一起: import java.util.function.Consumer; import java.util.function.Function; public class AmbiguityBug { public static void main(String[] args) { doStuff(getPattern(x -> System.out.println(x))); doStuff(getPattern(x -> String.valueOf(x))); } static Pattern getPattern(Function function) { return new Pattern(function); } static ConsumablePattern getPattern(Consumer consumer) { return new ConsumablePattern(consumer); } static void doStuff(Pattern pattern) { String result = pattern.apply(“Hello […]

多个重载方法:null是否等于NullPointerException?

public class TestMain { public static void methodTest(Exception e) { System.out.println(“Exception method called”); } public static void methodTest(Object e) { System.out.println(“Object method called”); } public static void methodTest(NullPointerException e) { System.out.println(“NullPointerException method called”); } public static void main(String args[]) { methodTest(null); } } 输出:调用NullPointerException方法