Kotlin 接口怎么写这种情况?


fun test(name:String){ 
       val needTest:NeedTest= NeedTest() 
       needTest.setTest(Test { 
           Log.e("test",name)//问题:直接使用方法中的变量,怎么整? 
       }) 
      needTest.start() 
}
 
Test.java
public interface Test { 
       void onComplete(); 
}
 
kotlin 接口没有构造方法,需要实现接口调用。但是实现接口后,使用方法的变量会变得很麻烦吧

 
已邀请:

yfl

赞同来自:

class NeedTest{ 
        private var test:Test?=null 
        
      fun setTest(test:Test){ 
               this.test=test 
        } 
        
        fun start(){ 
               if(test!=null){ 
                      test!!.onComplete() 
                } 
         } 
}
 

yfl

赞同来自:

已经解决使用匿名内部类写法
 
Test.kt
interface Test{ 
        fun onComplete()
}

fun test(name:String){ 
 
         val needTest:NeedTest= NeedTest() 
         needTest.setTest(object :Test { 
             override fun onComplete() { 
                        Log.e("test",name) 
             } 
       }) 
        needTest.start() 
}
 

laoyaocss

赞同来自:

如果接口实现了方法,子类中可以进行覆写,同时也可以调用super方法调用接口的实现

interface Wing{ fun fly() { Log.d("text", "Wing -> fly") } } open class InterfaceLesson : Wing{ override fun fly() { super.fly() } }
 
如果接口没实现方法,子类必须进行实现,且不能调用


interface Wing{ fun fly() } class InterfaceLesson : Wing{ override fun fly() { } }

如果多个接口有相同的方法,无论接口中是否实现,子类都必须实现该方法。其中,如果两个接口中都没有实现,则子类不能使用super关键字


interface Foot{ fun run() } interface Car{ fun run() } class InterfaceLesson : Foot, Car{ override fun run() { } }


这里有一片接口写法的详细文章,可以去看看 http://kotlin.guijieshuo.com

要回复问题请先登录注册