Intereting Posts
Преобразование строки JSON в экземпляр класса данных в Spring Anko 0.8 – ссылка на неразрешенные lparams Kotlin: получить суперкласс из объекта класса – ошибка вывода объекта Нельзя использовать проверку весов с MongoDB Пользовательский геттер для свойств параметров типа Не учитывать компонент Triple в сравнении Котлин Поэт пустой генерации конструктора – наследование Аннотации для весны с Котлином Когда у меня есть выбранный вид и сдвигается вниз по строке состояния, когда я поднимаю его снова, вид не выбран Как реализовать шаблон проектирования шаблонов в Котлине? У меня есть 2 xml анимации, как я могу ее отделить? Список Котлина отсутствует «добавить», «удалить» и т. Д.? Точка останова не попадает внутрь обратного вызова Kotlin в Intellij java.lang.IllegalStateException Не уверен, что это с типом данных? Как получить Flowable <List <Foo >> из объекта «Bar» с отношениями «один ко многим» «Foo» с использованием realm и Rxjava

Как получить доступ к атрибутам / методам в стандартном параметре класса

Новое в Котлин, прибывающее из C #.

Я пытаюсь создать класс, который принимает сменный объект класса через generics. В классе я хотел бы получить доступ к значениям атрибутов и методам вызова в классе. Я предполагаю, что это должно быть через какой-то механизм отражения. Копаясь через ссылки Kotlin, я пытаюсь применить предложения к своему коду, однако я получаю некоторые загадочные ошибки.

Любая помощь приветствуется.

Error:(35, 20) Kotlin: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: @InlineOnly public operator inline fun <T> Lazy<T1?>.getValue(thisRef: Any?, property: KProperty<*>): T1? defined in kotlin @InlineOnly public operator inline fun <V, V1 : T1?> Map<in String, T1?>.getValue(thisRef: Any?, property: KProperty<*>): T1? defined in kotlin.collections @SinceKotlin public fun <K, V> Map<Class<T1>, T1?>.getValue(key: Class<T1>): T1? defined in kotlin.collections @JvmName @InlineOnly public operator inline fun <V> MutableMap<in String, in T1?>.getValue(thisRef: Any?, property: KProperty<*>): T1? defined in kotlin.collections Error:(75, 20) Kotlin: Expression in a class literal has a nullable type 'T1?', use !! to make the type non-nullable Error:(75, 35) Kotlin: Type parameter bound for T in val <T : Any> KClass<T>.memberProperties: Collection<KProperty1<T, *>> is not satisfied: inferred type CapturedTypeConstructor(out T1?) is not a subtype of Any open class Base<T1, T2> (@Autowired var t2: T2) { @Autowired var request: T1? = null inline fun <reified T1: Any> retrieveClass(): T1? { return request.getValue(T1::class.java) } fun endpoint( @ApiParam(value = "Options", required = true) @Valid @RequestBody body: T1 ): ResponseEntity<MyResponse> { type1 = body val obj = retrieveClass() for (prop in obj::class.memberProperties) { println("${prop.name} = ${prop.get(obj)}") } val usefulResult = obj.usefulMethod() } } 

После изменения доступа к свойствам общего класса код выглядит так: с ошибкой в ​​println:

 Error:(82, 56) Kotlin: Out-projected type 'KProperty1<out T1, Any?>' prohibits the use of 'public abstract fun get(receiver: T): R defined in kotlin.reflect.KProperty1' open class Base<T1 : Any, T2 : Any> (@Autowired var t2: T2) { @Autowired var request: T1? = null fun endpoint( @ApiParam(value = "Options", required = true) @Valid @RequestBody body: T1 ): ResponseEntity<MyResponse> { val myClass = body.let { it::class } val my2ndClass = t2.let { it::class } for (prop in myClass.memberProperties) { println("${prop.name} = ${prop.get(myClass)}") } val usefulResult = my2ndClass.usefulMethod(myClass) } } 

Solutions Collecting From Web of "Как получить доступ к атрибутам / методам в стандартном параметре класса"