要在Java中使用Kotlin的数据类

通过这篇文章能够了解的事情。

以下是如何在Kotlin和Java共存的项目中,在Java类中使用Kotlin数据类的方法。

即境况或环境。

在当前参与的服务器端项目中,我们正在从Java迁移到Kotlin。通过使用Kotlin编写新的类,我们逐步推进向Kotlin的迁移。

在这种情况下,由于Java调用Kotlin的数据类时有些困惑,为了备忘起见,我会写下如何做。

要在Java中使用Kotlin的数据类。

总结起来,可以在使用 Kotlin 类的 Java 类中导入并正常创建对象来使用。

data class User(
val id: Int,
val name: String,
val mailAddress: String
)

例如,如果要在Java中使用上面提到的Kotlin数据类,可以按照以下方式进行编写。

import User;
public User createUser(Integer id, String name, String mailAddress) {
 User user = new User(id, name, mailAddress);
 return user;
}

尝试反编译Kotlin的数据类

当将Kotlin的数据类反编译为Java时,构造函数将如下所示。

public User(int id, @NotNull String name, @NotNull String mailAddress) {
      Intrinsics.checkNotNullParameter(name, "name");
      Intrinsics.checkNotNullParameter(mailAddress, "mailAddress");
      super();
      this.id = id;
      this.name = name;
      this.mailAddress = mailAddress;
   }

[要点]

    • Intはprimitiveのintに、StringはそのままStringに変換されている

 

    • JavaでもKotlinで記述したっとり必要な引数を取得するコンストラクタが生成されている

val指定すると、パラメーターにはNotNullの制約が付与される

总结

    • KotlinのデータクラスをJavaで利用する場合は普通にnewすればOK

 

    • コンストラクタにvalを指定した場合はKotlinの言語仕様通り、null 制約が付与されるので渡すパラメーターには注意が必要

 

    Kotlinのプリミティブな型(Int,String,Booleanなど)を利用している場合はJava側でどのクラス/プリミティブな型に変換されるのか確認したほうが良い

那么,祝你度过美好的Kotlin生活!

广告
将在 10 秒后关闭
bannerAds