Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 在Kotlin中传递方法与传递接口_Oop_Kotlin - Fatal编程技术网

Oop 在Kotlin中传递方法与传递接口

Oop 在Kotlin中传递方法与传递接口,oop,kotlin,Oop,Kotlin,当我使用Java时,很容易使用接口将方法发送到另一个类。而且它在面向对象方面很好: class A{ private FooListener listener; public A(FooListener listener){ this.listener = listener; } public void foo(){ // do something listener.method(); } } 但在Kotlin中

当我使用Java时,很容易使用接口将方法发送到另一个类。而且它在面向对象方面很好:

class A{
   private FooListener listener;

   public A(FooListener listener){
        this.listener = listener;
   }

   public void foo(){
        // do something
        listener.method();
   }
}
但在Kotlin中,我们可以使用如下参数轻松传递方法:

class A(val method: () -> Unit ) {
    fun foo(){ 
        // do something
        method()
    }
}

这段代码在面向对象编程方面仍然很好吗?或者我应该使用接口?我认为可以直接传递该方法。

在Kotlin中,这两种方法都是正确的,并且可以根据您的用例使用。 与Java不同,Java最初是一种语言,但后来随着Java8的引入而包含了一些编程特性,Kotlin从一开始就被设计为支持这两种方法

作为国家

Kotlin允许您以功能样式编程,但不强制执行 它

当您需要它时,您可以处理可变数据并编写 具有副作用的功能,无需跳过任何额外的 篮圈。当然,使用基于 接口和类层次结构与Java一样简单

什么时候 在用Kotlin编写代码时,可以将面向对象和 功能性方法,并使用最适合 您正在解决的问题。


代码正常。编写比“这必须是OOP”代码更可读的代码更好

传递函数比创建接口(可能创建一个匿名类)更具可读性。不管怎样,这都是一个好方法。