草庐IT

LayoutInflater_Delegate

全部标签

kotlin - 如何使用委托(delegate) 'by' 在 Kotlin 中获取对委托(delegate)实例的引用?

有没有办法在Kotlin中获取对委托(delegate)对象的引用?这是一个例子:interfaceA{funtest()}classB:A{overridefuntest(){println("test")}}classC:AbyB(){overridefuntest(){//???howtogetareferencetoB'stest()method?}} 最佳答案 目前无法直接执行此操作。您可以通过将其存储在主构造函数中声明的属性中来实现,如下所示:classCprivateconstructor(privatevalbDel

java - 我可以在 Java 中扩展 Kotlin 委托(delegate)类吗?

我正在尝试在Java中扩展Kotlin委托(delegate)类并得到以下错误:Cannotinheritfromfinal'Derived'参见下面的代码。我想做的是装饰一个类的方法。知道为什么Kotlin将Derived定义为final吗?有没有办法让Derived不是最终的,所以我可以继承它?Java:newDerived(newBaseImpl(10)){//Gettingtheerroronthisline:`Cannotinheritfromfinal'Derived'`};Kotlin:interfaceBase{funprint()}classBaseImpl(valx

kotlin - 可变映射烘焙的属性委托(delegate)

我有以下代码:classMapped(vardata:Map){valfirstName:Stringbydata}如果Mapped按如下方式使用,这可以正常工作:valmapped=Mapped(mapOf("firstName"to"initialFirstName"))println(mapped.firstName);//prints"initialFirstName"但是,由于data属性是可变的,我们可以更改它的值,即:mapped.data=mapOf("firstName"to"updated");但是,firstName属性仍然包含"initialFirstName"

如果 map 中不存在 Kotlin 委托(delegate)属性,则 map 会抛出 NoSuchElementException

我有一个这样定义的kotlin对象:dataclassUserUpdateRequest(valmap:Map){@get:Emailvalemail:String?bymapvalfirstName:String?bymapvallastName:String?bymap}所以效果很好,所以我遇到的问题是属性是可以为空的,当我访问一个时,比如说通过执行instance.email它会抛出一个NoSuchElementException如果该属性未在map中设置。相反,如果它返回null会更方便,因为它是可选的/可为空的。有没有办法在不编写我自己的委托(delegate)的情况下实现这

kotlin - kotlin 委托(delegate)有什么用?

我真的对kotlin代表团感到困惑。让我在这里描述一下看起来像kotlin委托(delegate)的常规多态方法。interfaceBase{funprint()}classBaseImpl(valx:Int):Base{overridefunprint(){print(x)}}funmain(args:Array){valb:Base=BaseImpl(10)b.print()//prints10}我可以将任何实现的Base接口(interface)类传递给b变量来调用指定类对象的方法。那么kotlin的委托(delegate)有什么好处呢?描述here.interfaceBase{

kotlin - 将属性委托(delegate)给另一个属性

你可以将一个属性委托(delegate)给Kotlin中的另一个属性吗?我有以下代码:classSettingsPage{lateinitvartagCharacters:JTextFieldlateinitvartagForegroundColorChooser:ColorPanellateinitvartagBackgroundColorChooser:ColorPanelvarallowedChars:Stringget()=tagCharacters.textset(value)=tagCharacters.setText(value)vartagForegroundColor

multiple-inheritance - Kotlin 中的部分类委托(delegate)

如何在Kotlin中部分委托(delegate)方法/字段?具体来说:这里我试图从接口(interface)TraitA继承类User并在包装器中实现字段marked:Boolean>状态A。这将清理User实现,因为marked只是一个状态字段。请注意,TraitA不能是一个类,因为我想使用几个这样的接口(interface):User():TraitAbyStateA,TraitBbyStateB,../*doesnotcompile(KotlinM12)*/interfaceTraitA{varmarked:BooleanfundoStaffWithMarked()//mustb

reflection - Kotlin:如何访问委托(delegate)的 get- 和 setValue 方法?

我一直想知道delegatedproperties("by"-Keyword)在幕后工作。我通过契约(Contract)了解到委托(delegate)(“by”的右侧)必须实现一个get和setValue(...)方法,但怎么能由编译器确保,以及如何在运行时访问这些方法?我最初的想法是,很明显,委托(delegate)必须我实现某种“SuperDelegate”接口(interface),但似乎情况并非如此。所以剩下的唯一选择(我知道)是使用反射来访问这些方法,可能在语言本身的低级别实现。我觉得这有点奇怪,因为根据我的理解,这将是相当低效的。此外,反射API甚至不是标准库的一部分,这使

android - Kotlin 对委托(delegate)属性的注解

在Kotlin中,有没有办法在委托(delegate)属性上定义注解(例如:lazy)?classMyActivity:Activity(){@ColorIntvaltextColor:Intbylazy{ContextCompat.getColor(this,R.color.someColor)}...IDE在@ColorInt注释处抛出错误:Thisannotationisnotapplicabletotarget'memberpropertywithdelegate' 最佳答案 如果注释getter对你来说已经足够了,你可以使

java - 从 Java 中调用具有类委托(delegate)的 Kotlin 对象作为静态方法

这可能有点难以描述,所以我将尝试给出一个具体示例来说明我正在尝试做的事情。假设我们有一个Facade接口(interface)和类(在Java中),像这样:interfaceFacadeInterface{voidmethod(Stringfrom,Stringvia);}classFacadeimplementsFacadeInterface{privateClassmClazz;publicFacade(Classclazz){mClazz=clazz;}@Overridepublicvoidmethod(Stringfrom,Stringvia){System.out.print