【问题标题】:Data class Kotlin to Java Class数据类 Kotlin 转 Java 类
【发布时间】:2018-03-05 13:27:29
【问题描述】:

我有一个 kotlin 数据类,我正在尝试从 Java 方法调用它。

data class Item  (
                @PrimaryKey(autoGenerate = true) var var1: Long? ,
                @ColumnInfo(name ="var1") var var2: Long){}

从 Java 中,我正在尝试保存 Item 列表,因此我需要实例化 Data 类。我不明白我该怎么做。

【问题讨论】:

    标签: java android kotlin data-class


    【解决方案1】:

    实例化 data class 与实例化“普通”的 Kotlin 类没有什么不同。

    从您的 Java 代码中,您将其实例化为一个 Java 类:

    Item item = new Item(1L, 2L); 
    

    仅供参考,data class 是自动获取以下成员的class(参见documentation here):

    • equals()/hashCode()对;
    • toString() 形式为“MyClass(field1=value1, field2=value2)”;
    • componentN() 对应于属性的函数按它们的声明顺序;这对destructuring declarations 很有用,例如:

      data class Item(val val1: Long, val val2: Long)
      
      fun main(args: Array<String>) {
          val item = Item(1L, 2L)
          val (first, second) = item
          println("$first, $second")
      }
      

      这将打印:1, 2

    • copy() 函数。

    【讨论】:

      【解决方案2】:

      你的数据类会是这样的:

             data class Item  (@PrimaryKey(autoGenerate = true) var var1: Long?,
                  @ColumnInfo(name ="var1") var var2: Long);
      

      从 Java 中,您可以像这样创建创建对象:

        Item item=new Item(1L,2L);
         long firstValue=item.getVar1();
         long secondValue=item.getVar2();
      

      如果你想在 kotlin 中创建实例,它会是这样的:

         val item=Item(1L,2L);
          val firstValue:Long?=item.var1;
          val secondValue:Long?=item.var2;
      

      【讨论】:

      • 在您的 kotlin 示例中不需要分号。
      • 是的,分号在 Kotlin 中是可选的。
      猜你喜欢
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      相关资源
      最近更新 更多