직접 질문에 답변하려면 아니오, 유형 삭제가 아직 발생하지 않았습니다. 암시 적 검색은 유형에 대한 완전한 지식을 가지고 발생해야합니다. 이러한 방법은 런타임에 어떻게 보이는지 확인하려면, 당신은 컴파일 된 클래스를 볼 수 javap
을 실행할 수 있습니다
scala> :javap M -s
Compiled from "<console>"
public class M$ {
public static final M$ MODULE$;
Signature: LM$;
public static {};
Signature:()V
public void m(scala.collection.Seq<java.lang.Object>, M$AMarker$);
Signature: (Lscala/collection/Seq;LM$AMarker$;)V
public void m(scala.collection.Seq<java.lang.String>, M$BMarker$);
Signature: (Lscala/collection/Seq;LM$BMarker$;)V
public M$();
Signature:()V
}
그래서 기본적으로 컴파일러했다 명확한 실행 방법. 그것은 컴파일 타임 동안 정확한 방법을 찾으며 근본적으로 암시 적 객체를 사용하여 모호하지 않게합니다.
쿨 트릭 BTW! 전에 직접이 방법을 사용한 것을 보지 못했습니다.
올바른 방법을 호출하기 위해 컴파일시 Seq [A]의 유형 정보를 사용할 수 있지만 런타임에는 해당 정보를 사용할 수 없기 때문에 – Falmarri
질문에 대한 대답이 아니라 재미있는 관찰 : 모호성 제거 가능 하나의'm()'을 하나의 함수로 만들고 다른 하나는 하나의 메소드로 남겨 두는 것입니다. 암시 또는 마커가 필요하지 않습니다. – jwvh