메서드 참조를 통해 메서드를 정의하는 방법은 있습니까? 다음 가상 코드 (및 가상 구문)에 의해 설명됩니다.Java 8에서는 메소드 참조를 사용하여 메소드를 정의/구현할 수 있습니까?
class A
{
public Sometype somefunction(Argtype arg)
{ ... return somevalue; ..}
}
class B
{
public Sometype method = A::somefunction;
}
또는
class C
{
public Sometype method(Argtype arg) = A::somefunction;
}
유사한 기능
은 나에게 매우 유용 보인다. 메서드는 컴파일시에 알 수 있으므로 클래스B
또는
C
의 모든 정의는 간단히 (형식 검사 후)
A
의 이미 알려진 메서드에 대한 참조를 인수 할 수 있습니다. 장점 : 더 빠른 호출 (새로운 메소드의 직접 호출보다 더 적은 호출) - Java 컴파일러가 최적화하지 않는지 확실하지 않은 곳에서?
Java에서 이미이를 달성 할 수있는 방법이 있습니까? 그렇다면 성공적으로 내 검색을 피했습니다. 아니면 Java에 소개하지 않는 좋은 이유가 있습니까? 비슷한 성능 이점을 제공하는 해결 방법이 있습니까?
추신 : 비슷한 질문 제목이 downvoted 및/또는 닫혔다는 메시지가 나타납니다. 이 내용이 여기에 적용되는 경우 이유를 이해하도록 도와주십시오. 미리 감사드립니다!
데코레이터 사용은 어떻습니까? ? 정확한 유스 케이스를 공유 할 수있는 경우 클래스 A에서 메소드를 정의하고 클래스 B 또는 C에서 동일한 메소드를 호출 할 수 있습니다. 그건 당신의 요구 사항을 취소합니다.더 정확한 답변을 얻을 수 있습니다. – Pramod
성능 이점? 마이크로 최적화에 대한 질문입니까? – Kayaman
'Sometype'은'somefunction'의 리턴 타입입니다. 'B'와'C' 클래스의 필드는'Function'또는 이와 비슷한 것이어야합니다. –
dpr