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();