Class
및 Method
을 모두 매개 변수로 메서드에 전달하는 방법을 찾고 있습니다. 내가 줄이기를 원하는 반복적 인 코드 조각이있다.클래스 및 메서드를 매개 변수로 전달
public static void methodName(Class C, Method m) {
C.m.sendKeys("item");
}
가 어떻게이게 가능 :
나는 이런 식으로 뭔가를 원하는?
Class
및 Method
을 모두 매개 변수로 메서드에 전달하는 방법을 찾고 있습니다. 내가 줄이기를 원하는 반복적 인 코드 조각이있다.클래스 및 메서드를 매개 변수로 전달
public static void methodName(Class C, Method m) {
C.m.sendKeys("item");
}
가 어떻게이게 가능 :
나는 이런 식으로 뭔가를 원하는?
예,이 경우 Consumer<...>
을 사용할 수 있습니다. 예를 들어 :이 또한 인스턴스 메소드 작동
methodName(MyClass::methodToPass);
구문과 함께 :
class MyClass {
public static void methodToPass(String arg) {...}
}
public static void methodName(Consumer<String> cons) {
cons.accept("item");
}
는 다음과 같이 호출합니다 BiConsumer<...>
를 사용하여,
MyClass mc = new MyClass();
methodName(mc::methodToPass);
를 또는 어떤에서 첫 번째 인수가 전달 된 경우 메서드를 호출 할 인스턴스 여야합니다.
methodName(MyClass::methodToPass);
이것은 당신이 전화하는거야 방법만큼 작동
public static void methodName(BiConsumer<MyClass, String> cons) {
MyClass mc = ...;
cons.accept(mc, "item");
}
16,는 Consumer<...>
에 대한 유형 매개 변수로 지정하는 유형의 하나 개의 인수를합니다.
Consumer<...>
과 같은 다른 인터페이스를 사용하여 java.util.function 패키지의 다른 유형의 메서드에 사용할 수 있습니다.
Java 8에서는 λ로 전달 된 메소드 참조를 사용할 수 있습니다.
methodName(C::m);
당신은 함수의 종류 (인수 및 반환 값)를 지정하고 기존 기능 인터페이스 중 하나를 사용하거나 자신을 정의 할 필요가있다.
예를 들어, 함수는 부울을 반환 입력으로 클래스 T의 오브젝트를하는 경우에는 미리 정의 된 기능 인터페이스 Predicate
사용할 수 있습니다
public static void methodName(Item item, Predicate<Item> p) {
p.test(item);
// ...
}
아니, 당신이 익명의 구현과 인터페이스를 통과 할 수 있습니다 초기 버전들 – Benedictus