标签: data-class

是否可以在kotlin中嵌套数据类?

我正在尝试实现类似以下C的类似数据类定义:

struct A {
  int b;
  struct {
     int d;
  } c; 
};
Run Code Online (Sandbox Code Playgroud)

According to Dmitry Jemerov it is possible, but he didn't provide any code sample. https://discuss.kotlinlang.org/t/is-there-a-reason-for-not-allowing-inner-data-classes/2526/5

You can simply make it nested inside another class. Nested classes can be data classes.

How it should be done if it is true?

kotlin data-class

3
推荐指数
1
解决办法
50
查看次数

Kotlin解构变量不适用于Pair,Triple或数据类

我最近在kotlinc,命令行环境中尝试了以下代码.

var greet = Pair("Hello", "World")
val (word1, word2) = greet
Run Code Online (Sandbox Code Playgroud)

输出word1word2在控制台输出以下消息

>>> word1
error: unresolved reference: word1
word1
^
Run Code Online (Sandbox Code Playgroud)

我不确定是否从最新版本的kotlin中删除了解构.目前,在mac上使用编译器1.0.2版本kotlinc.

java destructuring kotlin data-class

2
推荐指数
1
解决办法
668
查看次数

lambda表达式的函数

我有一个数据类,我需要初始化一些List<String>.我需要获取JsonArray的值(我正在使用Gson).

我做了这个功能:

private fun arrayToList(data: JsonArray, key: String): List<String> {
    val list = mutableListOf<String>()

    data.forEach { a ->
        list.add(a[key].asString)
    }

    return list
}
Run Code Online (Sandbox Code Playgroud)

我如何转换为lambda表达式?

谢谢.

lambda kotlin data-class

2
推荐指数
1
解决办法
406
查看次数

不可变(数据)类上的多个构造函数

我正在尝试使用多个构造函数实现不可变数据类.我觉得这样的事情应该是可能的:

data class Color(val r: Int, val g: Int, val b: Int) {
   constructor(hex: String) {
        assert(Regex("#[a-fA-F0-6]{6}").matches(hex), { "$hex is not a hex color" } )
        val r = hex.substring(1..2).toInt(16)
        val g = hex.substring(3..4).toInt(16)
        val b = hex.substring(5..6).toInt(16)
        this(r,g,b)
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,它不是:Kotlin期望对主构造函数的调用在顶部声明:

constructor(hex: String): this(r,g,b) {
    assert(Regex("#[a-fA-F0-6]{6}").matches(hex), { "$hex is not a hex color" } )
    val r = hex.substring(1..2).toInt(16)
    val g = hex.substring(3..4).toInt(16)
    val b = hex.substring(5..6).toInt(16)
}
Run Code Online (Sandbox Code Playgroud)

这也没有用,因为调用是构造函数体之前执行的,并且无法访问局部变量.

我可以做这个,当然是:

constructor(hex: …
Run Code Online (Sandbox Code Playgroud)

constructor immutability kotlin data-class

2
推荐指数
1
解决办法
1400
查看次数

通过反射调用数据类copy()

而已.是否可以通过Kotlin中的反射调用数据类的copy()函数?我怎样才能引用函数本身?是否有所有数据类的超类?(我找不到......)

reflection copy kotlin data-class

2
推荐指数
1
解决办法
920
查看次数

Kotlin数据类和LocalDateTime

我有机票舱位:

data class Ticket(
        var contact_email : String? = null,
        var date_opened : LocalDateTime? = null
)
Run Code Online (Sandbox Code Playgroud)

但是从字符串读取时出现错误:

引起原因:com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造实例java.time.LocalDateTime(没有创建者,如默认构造一样,存在):没有从字符串值反序列化的字符串参数构造函数/工厂方法('2017-11-13T06 :40:00Z'),网址为[来源:UNKNOWN; 行:-1,列:-1](通过参考链:rnd_classifier.model.Ticket [“ date_opened”])

我尝试添加注释没有成功:

data class Ticket(
        var contact_email : String? = null,

        @JsonSerialize(using = ToStringSerializer::class)
        @JsonDeserialize(using = LocalDateTimeDeserializer::class)
        var date_opened : LocalDateTime? = null
)
Run Code Online (Sandbox Code Playgroud)

如何解决?

jackson kotlin data-class localdate

2
推荐指数
1
解决办法
1808
查看次数

要列表的数据类参数 - Kotlin android

我有一个包含大约 37 个属性/参数的 Kotlin 数据类。我想将所有这些参数的值放入列表中。我怎样才能以干净、最小化和高效的方式做到这一点?我尝试过搜索,但还没有遇到任何类似的情况。

任何帮助,将不胜感激。谢谢。

编辑

每个属性/参数都是一个字符串。我在 Android 中将每个字符串加载到其自己的 TextView 中(是的,TableLayout 中的 37 个 TextView 每个都有自己的标签。类似于收据的样子)。但我不想这样做 ( textView.text = myClass.parameter) 37 次。

android list kotlin data-class

2
推荐指数
1
解决办法
9677
查看次数

Kotlin 数据类强制值约束

kotlin 中是否有任何方法可以对数据类值进行约束。我正在寻找类似于以下 java.lang.String 的内容。它不需要是非法参数异常,并且约束不一定在字符串字段上。

public class TotallyMadeUpClass{
    private String username
    public String getUsername(){ return this.username }

    //Constrain the value somehow.
    public void setUsername(String username) {
        if (username.length > 10)
        throw new IllegalArgumentException()
        this.username = username}
}
Run Code Online (Sandbox Code Playgroud)

或者这个例子更接近我想要实现的目标。

public class TotallyMadeUpClass{
    private final String username;

    TotallyMadeUpClass(String username, OtherParams others){
        if (username.length > 10)
            throw new IllegalArgumentException()
        this.username = username
    }

    public String getUsername(){ return this.username }


}
Run Code Online (Sandbox Code Playgroud)

validation kotlin data-class

2
推荐指数
1
解决办法
1611
查看次数

kotlin 中的数据类继承?

我在 Java 中有 2 个模型类,其中一个扩展了另一个

@UseStag
public class GenericMessages extends NavigationLocalizationMap implements Serializable {
@SerializedName("loginCtaText")
@Expose
String loginCtaText;
@SerializedName("forgotPasswordCtaText")
@Expose
String forgotPasswordCtaText;

public String getLoginCtaText() {
    return loginCtaText;
}

public String getForgotPasswordCtaText() {
    return forgotPasswordCtaText;
}
}
Run Code Online (Sandbox Code Playgroud)

NavigationLocalizationMap 类

public class NavigationLocalizationMap implements Serializable {

@SerializedName("localizationMap")
@Expose
public HashMap<String, LocalizationResult> localizationMap;

@SerializedName("geoTargetedPageIds")
@Expose
public HashMap<String, String> geoTargetedPageIdsMap;

@SerializedName("pageId")
@Expose
public String pageId;

public HashMap<String, LocalizationResult> getLocalizationMap() {
    return localizationMap;
}

public void setLocalizationMap(HashMap<String, LocalizationResult> localizationMap) {
    this.localizationMap = localizationMap;
} …
Run Code Online (Sandbox Code Playgroud)

inheritance kotlin data-class

2
推荐指数
1
解决办法
8493
查看次数

为什么 Kotlin 不在数据类构造函数中隐式分配 null 值可空字段?

给定一个具有可为空字段的数据类,为什么我不能通过仅传递不可为空字段来构造它?

我已经看过这个相关问题了。是什么阻止 Kotlin 隐式将 null 分配给可为 null 的字段?

data class Blah(val id: Int, val name: String?)

val x = Blah(id = 2) // Complains I didn't pass a name ???
Run Code Online (Sandbox Code Playgroud)

kotlin data-class

2
推荐指数
2
解决办法
273
查看次数