Articles of delegates de

¿Qué lenguajes de progtwigción admiten la implementación implícita de la interfaz por delegación?

Kotlin puede hacer este truco muy limpio: class Derived(b: Base) : Base by b lo que hace que su class Base implementos Derived , y todos los methods de Base no implementados explícitamente en Derived se deleguen automáticamente al miembro b . No programo en Kotlin y perder 'this' puntero puede ser bastante limitante, pero […]

Kotlin delega con Room persistence lib

Actualmente estoy desarrollando una nueva aplicación para Android usando Kotlin. Intenté implementar Room para el almacenamiento de datos, pero no conseguí que funcionara con los delegates de Kotlin. Creé un delegado Identifier para asegurarme de que la identificación no se modifique después de la initialization. El delegado se ve así: class Identifier: ReadWriteProperty<Any?, Long> { […]

Obtención de información de KProperty dentro de la propiedad delegada fuera de las funciones getValue () y setValue ()

Estoy tratando de implementar la interfaz de propiedad JavaFX con una propiedad delegada de Kotlin, para que pueda usarse así: class Foo(bar:Bar){ val barProperty=PropertyFX(bar) var bar by barProperty } Escribí una class pequeña para esto que funciona (principalmente): class PropertyFX<T>(value:T):SimpleObjectProperty<T>(value),ReadWriteProperty<Any?,T>{ override fun getValue(thisRef:Any?,property:KProperty<*>)=get() override fun setValue(thisRef:Any?,property:KProperty<*>,value:T)=set(value) } Sin embargo, esta class no implementa los methods […]

¿Cómo establecer el valor de propiedad delegada por reflexión en kotlin?

mi class de entidad: class User : ActiveRecord<User>() { var name by Column(String.javaClass); var id by Column(Int.javaClass); } ahora quiero establecer el valor del nombre por reflexión: var clazz = User().javaClass var record = clazz.newInstance() var field = record.getDeclanetworkingField(it + "$" + "delegate") field.set(record,"aa") entonces error: entity.Column field ActiveRecord4k.User.name$delegate to java.lang.String ¿como hacer esto? ty!

propiedad de delegado kotlin, en un método get () cómo puedo acceder al valor?

Kotlin tiene properties delegadas, lo cual es una característica muy agradable. Pero estoy averiguando cómo get y establecer los valores. Digamos que quiero get el valor de la propiedad delegada. En un método get (), ¿cómo puedo acceder al valor? Aquí hay un ejemplo de cómo lo he implementado: class Example() { var p: String […]

Kotlin: cómo acceder a las properties en el constructor

Considera seguir class: class Test() { init { log(foo) } val foo = "Bar" } Cuando instalo Test produce una NullPointerException porque foo no parece haberse inicializado. ¿Este comportamiento es realmente intencional? ¿Hay alguna solución?

La delegación de propiedad kotlin alias lanza Exception

Quiero agregar propiedad de alias a alguna class en kotlin que solo se delegan a algunas properties existentes luego invento un método llamado alias para hacerlo, lo que desafortunadamente resulta en una exception val <T> Array<T>.length by alias(Array<T>::size) val <T> Collection<T>.length by alias(Collection<T>::size) fun <R, T> alias(alias: KProperty1<R, T>) = object : ReadOnlyProperty<R, T> { […]

Acceda al tipo de delegado de Kotlin sin una instancia

He leído el delegado de la propiedad de Access en Kotlin, que trata de acceder a un delegado de una instancia. Uno puede usar KProperty::getDelegate desde Kotlin 1.1, sin embargo, esto devolverá la instancia del delegado y, por lo tanto, necesita primero una instancia de la class. Ahora quiero get el tipo de delegado sin […]

¿Puedo inferir el tipo de una propiedad en el delegado?

Tengo este código. findViewById con un delegado. val backgroundImage: ImageView by lazy { view<ImageView>(R.id.item_component_section_background) } fun <T: View> view(id : Int) : T { val view : View = findViewById(id) ?: throw IllegalArgumentException("Given ID could not be found in current layout!") @Suppress("UNCHECKED_CAST") return view as T } ¿Hay alguna forma de eliminar la view<ImageView> de […]

Llame al object Kotlin con la delegación de class de Java como método estático

Esto puede ser un poco difícil de describir, así que trataré de dar un ejemplo concreto de lo que estoy tratando de hacer. Supongamos que tenemos una interfaz y una class Fachada (en java), como esta: interface FacadeInterface<T> { void method(String from, String via); } class Facade<T> implements FacadeInterface<T> { private Class<T> mClazz; public Facade(Class<T> […]