내 상황은 :Java 8 : 정적 메서드를 다른 메서드의 매개 변수로 사용하려면 어떻게해야합니까?
class Test {
private static void xxx(String s) throws SQLException {
System.out.println(s);
}
private static void yyy(Consumer<String> f) {
try {
f.apply('hello');
} catch (SQLException e) {
System.out.println("error");
}
}
public static void main(String args[])() {
yyy(xxx); // <-- not working!!
}
}
난 할 노력하고있어 또 다른 정적 메서드의 매개 변수로 정적 메서드를 전달하는 것입니다. 나는 yyy
메서드의 서명을 선언하는 올바른 방법은 Consumer
이라고 생각하지만, 다른 부분에 대해서는 잘 모르겠다. xxx
을 매개 변수로 전달한다.
내가 찾은 가능한 솔루션은
yyyy(s -> xxx(s));
을 작성하는 것입니다 그러나 그것은 추한 외모와 xxx
예외를 throw하면 정말 작동하지 않습니다.
yyy(Test::xxx);
를 사용하여
나는 당신이 방법 참조를 사용할 수 있습니다
error: incompatible thrown types SQLException in method reference
정적 멤버 (필드, 메서드, 중첩 된 클래스 ...)에 대한 올바른 참조는 클래스의 이름을 포함해야합니다. 따라서'Test :: xxx'가 아니라'xxx'입니다. – RealSkeptic