그것은 코 틀린 내부 위임 속성에 대한 사용자 정의 이름을 제공 할 수있다?

Pritam Kadam :

나는 다음과 같은 코드를 가지고 있고 액세스하려는 scriptDsl에서 건물 Java내부에서 동일한 코드베이스에서. 나는 노출하지 않으려는 scriptDsl공개적으로.

class ScriptDsl {
    internal val scriptDsl: JScriptDsl by lazy { //... }
}

컴파일 할 때, scriptDsl이된다 public final JScriptDsl getScriptDsl$esw_ocs_dsl_kt()하지만 사용 비 위임 속성 수 있습니다 여기에 사용자 이름을 제공합니다 JvmName("scriptDsl"). 어떻게 그것을 수행하는 internal delegated properties?

나는 "다른 더 나은 솔루션이 있다면, 내 요구 사항은 벌금을 오전

  • 나는 전화를 걸 scriptDsl같은 모듈 내에서 자바에서
  • 나는 필요가 사전에 이름을 알 수 있도록 반사를 사용하여 호출 오전
  • ScriptDsl공공 내가 재산 원하지 않는 scriptDsl액세스 할 수있는 외부 모듈을
  • scriptDsl 그것은 다른 속성에 의존하기 때문에 게으른하는 것은 avaibale 선언하면서하지 않을 수있는

참고 : 내가 아는 internal코 틀린에는 public자바.

코 틀린 문서에서 :

내부 선언은 자바에서 공개된다. 내부 클래스의 멤버는 열심히 실수로 그것을 만들 자바에서 그들을 사용하고 코 틀린 규칙에 서로 관련된 발명이 표시되지 않습니다 동일한 서명을 가진 회원 오버로드 할 수 있도록하기 위해, 이름 맹 글링을 통해 이동;

안드레이 타 나나 :

이 같은 터링하기 위해 주석 대상을 지정할 수 있습니다 :

class ScriptDsl {
    @get:JvmName("scriptDsl")
    internal val scriptDsl: JScriptDsl by lazy { //... }
}

다음 그냥 콜 scriptDsl:

ScriptDsl scriptDsl = new ScriptDsl();
scriptDsl.scriptDsl();

추천

출처http://43.154.161.224:23101/article/api/json?id=330273&siteId=1