나는 현재 라이브러리의 DSL을 쓰고 있어요 및 I는 다음과 같이 구체화 형 매개 변수를 사용하여 형식 메타 데이터를 제공하고 싶습니다 :Kotlin의 인스턴스 필드에 구체화 된 유형 데이터를 저장하려면 어떻게해야합니까?
val config = Config.create()
.consumerFor<MyType>{
// consume
}
내 문제는 내가 단지 inline
기능에 reified
키워드를 사용할 수 있고 inline
기능에 나는이 같은 인스턴스 필드를 사용할 수 없습니다
inline fun <reified T> consumerFor(consumer: (T) -> Unit) {
consumers.put(T::class.java, consumer)
return this
}
를 내가 오류 얻을 수 있기 때문에 :
을Public-API inline function cannot access non-public-API 'private final val consumers...
가장 유용한 곳에 구체화 된 유형 매개 변수를 사용할 수없는 것 같습니다. 이 문제를 해결할 수있는 방법이 있습니까? 클래스 외부 호출 사이트에 인라인 때 용도는 (JVM에, 클래스의 private
구성원이 외부에서 액세스 할 수 없습니다) 잘못된 액세스 수준이있을 것이다, 때문에
괜찮습니다. 고맙습니다. 이것은 최종 필드가있는 구성 클래스 일 뿐이므로 신경 쓰지 않아도됩니다. –