空块和单元之间有什么区别

时间:2019-03-28 03:25:13

标签: kotlin

空块和返回单位之间有区别吗?

例如,我们应该让空块使方法什么都不做

void ThisMethodDoesNothing() { }


在kotlin中,我们可以用上面的方法编写代码

fun ThisMethodDoesNothing() = Unit


请让我知道是否重复,谢谢。

1 个答案:

答案 0 :(得分:3)

我认为这两个人可能做同样的事情,但是我无法确定。我真的很想知道。因此,我创建了一个类来放入每个类(因为Java必须在任何代码周围都包含一个类),更改了Kotlin版本,以使该方法上的属性相同,这给了我这个:

a.java

public class a {
    public final void ThisMethodDoesNothing() { }
}

b.kt

class b {
    fun ThisMethodDoesNothing() = Unit
}

然后我编译了其中的每一个,然后用javad -c对其进行反编译,得到了:

> javap -c com.inlet.ifserver.a
Compiled from "a.java"
public class com.inlet.ifserver.a {
  public com.inlet.ifserver.a();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public final void ThisMethodDoesNothing();
    Code:
       0: return
}

> javap -c com.inlet.ifserver.b
Compiled from "b.kt"
public final class com.inlet.ifserver.b {
  public final void ThisMethodDoesNothing();
    Code:
       0: return

  public com.inlet.ifserver.b();
    Code:
       0: aload_0
       1: invokespecial #11                 // Method java/lang/Object."<init>":()V
       4: return
}

所以我认为答案是肯定的!两者都不做。