자바에서 함수포인터를 대체할만한건 뭔가요?
조회수 9359회
10줄정도 되는 메소드가 있는데요. 코드 몇줄 바꾸는것 같은 차이는 무시하고 거의 같은 일을하는 메소드를 몇개 더 만들고 싶어요. 함수포인터는 그런걸 거의 한줄로 대체하는데 자바에는 함수포인터가 없잖아요.
함수포인터를 대신할만한게 뭔가요?
1 답변
-
함수포인터를 대체할만한 내부 익명 클래스(Anonymous inner class) 가 있는데요.
String을 매개변수로 받고 int를 리턴하는 함수가 있다면 먼저 메소드만 가지는 interface를 정의해 줍니다.
interface StringFunction { int func(String param); }
public void takingMethod(StringFunction sf) { int i = sf.func("my string"); // do whatever ... }
위에처럼 메소드는 StringFunction의 인스턴스에서 접근 가능합니다.
ref.takingMethod(new StringFunction() { public int func(String param) { // body } });
호출은 이런식으로 하면됩니다.
또 java 8에서 람다식을 쓰시면
ref.takingMethod(매개변수 -> 처리);
이런 식으로도 가능합니다.
댓글 입력