Java
에서 람다를 사용하려고하지만 전혀 작동하지 않습니다. Java의 FunctionalInterfaces에있는 Lambdas
@FunctionalInterface
public interface MyFunctionalInterface {
String getString(String s);
}
지금 내 코드에서 내가 아니라 여기
lambda
를 사용 :이 같은
@FunctionalInterface
을 만들어
MyFunctionalInterface function = (f) -> {
Date d = new Date();
return d.toString() + " " + person.name + " used fnc str";
};
다음, 내 function
의 사용은 다른 클래스의 생성자로 전달 만들고 싶어하고 다음과 같이 사용하십시오 :
public SampleClass(MyFunctionalInterface function) {
String tmp = "The person info: %s";
this.result = String.format(tmp, function.getString(String.valueOf(function)));
}
왜 여기에 valueOf()
을 사용해야합니까? 이 덕분에 그냥 function.getString()
을 사용할 수 있다고 생각 했나요?
출력 : 어떤 인수없이 호출 할 수 있도록이 Tue Sep 19 11:04:48 CEST 2017 John used fnc str
당신의 함수는 같은'String'를 취합니다
또는, 당신은 당신의 기능 인터페이스의 방법에서 인수를 제거 할 수 있습니다 매개 변수. 문자열 형식을 읽으면 그 사람 정보를'String'으로 전달해야합니다. 지금 당장은 함수 자체의 문자열 표현을 함수에 전달하고 있습니다. – marstran
당신이 달성하고자하는 것은 분명하지 않습니다. 나는 당신이 함수를 사용하는 곳에서 람다 정의를 기대했을 것이다. 또는 메서드 참조를 사용합니다. 지금 당장 가지고있는 코드는 함수가 그 자체의 문자열 표현을 표현하고 생성 한 다음 함수 자체에 입력으로 전달되는 OBJECT를 돌려 줄 것이라고 생각합니다. 단순히 의미가 없습니다. – GhostCat
이 코드의 출력은 무엇입니까? – jrook