delegating-constructor
全部标签 所以由于我一直在使用Spring,如果我要编写一个具有依赖关系的服务,我会执行以下操作:@ComponentpublicclassSomeService{@AutowiredprivateSomeOtherServicesomeOtherService;}我现在遇到了使用另一种约定来实现相同目标的代码@ComponentpublicclassSomeService{privatefinalSomeOtherServicesomeOtherService;@AutowiredpublicSomeService(SomeOtherServicesomeOtherService){this.
有没有办法在Kotlin中获取对委托(delegate)对象的引用?这是一个例子:interfaceA{funtest()}classB:A{overridefuntest(){println("test")}}classC:AbyB(){overridefuntest(){//???howtogetareferencetoB'stest()method?}} 最佳答案 目前无法直接执行此操作。您可以通过将其存储在主构造函数中声明的属性中来实现,如下所示:classCprivateconstructor(privatevalbDel
我正在尝试在Java中扩展Kotlin委托(delegate)类并得到以下错误:Cannotinheritfromfinal'Derived'参见下面的代码。我想做的是装饰一个类的方法。知道为什么Kotlin将Derived定义为final吗?有没有办法让Derived不是最终的,所以我可以继承它?Java:newDerived(newBaseImpl(10)){//Gettingtheerroronthisline:`Cannotinheritfromfinal'Derived'`};Kotlin:interfaceBase{funprint()}classBaseImpl(valx
我正在Kotlin中创建一个Realm对象。Realm对象:openclassPurposeModel(var_id:Long?,varpurposeEn:String?,varpurposeAr:String?):RealmObject()当我编译上面的代码时,我得到了这个错误:error:Class"PurposeModel"mustdeclareapublicconstructorwithnoargumentsifitcontainscustomconstructors.我在Kotlin中找不到任何与此相关的问题。我该如何解决这个问题? 最佳答案
我有以下代码: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"
我有一个这样定义的kotlin对象:dataclassUserUpdateRequest(valmap:Map){@get:Emailvalemail:String?bymapvalfirstName:String?bymapvallastName:String?bymap}所以效果很好,所以我遇到的问题是属性是可以为空的,当我访问一个时,比如说通过执行instance.email它会抛出一个NoSuchElementException如果该属性未在map中设置。相反,如果它返回null会更方便,因为它是可选的/可为空的。有没有办法在不编写我自己的委托(delegate)的情况下实现这
我经常发现自己的父类(superclass)有很多可选参数,而这些相同的参数在其子类中也需要是可选参数。例如父类(superclass):abstractclassPlugin(valname:String,valversion:String="1.0",valauthor:String="",valdescription:String="")扩展这门课很痛苦。这是一个示例子类:abstractclassCyclePlugin(name:String,version:String="1.0",author:String="",description:String="",valdurat
我真的对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{
你可以将一个属性委托(delegate)给Kotlin中的另一个属性吗?我有以下代码:classSettingsPage{lateinitvartagCharacters:JTextFieldlateinitvartagForegroundColorChooser:ColorPanellateinitvartagBackgroundColorChooser:ColorPanelvarallowedChars:Stringget()=tagCharacters.textset(value)=tagCharacters.setText(value)vartagForegroundColor
如何在Kotlin中部分委托(delegate)方法/字段?具体来说:这里我试图从接口(interface)TraitA继承类User并在包装器中实现字段marked:Boolean>状态A。这将清理User实现,因为marked只是一个状态字段。请注意,TraitA不能是一个类,因为我想使用几个这样的接口(interface):User():TraitAbyStateA,TraitBbyStateB,../*doesnotcompile(KotlinM12)*/interfaceTraitA{varmarked:BooleanfundoStaffWithMarked()//mustb