我在Java中有这个:
public class User {
String name;
String id;
int age;
public User(String name) {
this.name = name;
}
public User(String name, String id) {
this.name = name;
this.id = id;
}
public User(String id, int age) {
this.id = id;
this.age = age;
}
public User() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", id='" + id + '\'' +
", age=" + age +
'}';
}
}
在Kotlin类中,它是这样的:
class User {
var name: String?=null
var id: String?=null
var age: Int = 0
constructor(name: String) {
this.name = name
}
constructor(name: String, id: String) {
this.name = name
this.id = id
}
constructor(id: String, age: Int) {
this.id = id
this.age = age
}
constructor() {}
override fun toString(): String {
return "User{" +
"name='" + name + '\'' +
", id='" + id + '\'' +
", age=" + age +
'}'
}
}
我需要知道的是,如何在具有4个不同构造函数和setter和getter的数据类中执行此操作
4 回答
您可以使用默认参数和命名参数的组合,因此不需要多个构造函数 . 像这样定义您的数据类:
然后以任意多种方式构建它 .
getter和setter是为您定义的,无需定义它们 .
在Kotlin中,我们可以在像这样的单个构造函数中使用它
如果我们想暴露getter而不是setter,我们只提供 val 而不是 var ,如下所示,
getters / setters可见性修饰符我们可以在这样的构造函数中提供它们,
在上面的例子中,只有该模块才能访问getter .
我们可以创建这样的对象,
Android studio提供了一种非常简单的方法来实现将任何Java类转换为Kotlin . 只需在文件搜索选项卡中键入"convert java to kotlin",IDE就会为您执行此操作
只是我从其他人那里添加了不同的答案,因为如果你在User数据类中有太多变量,那么它应该像下面那样太长 .
所以你可以创建如下,
Implementation:
Output :