我在数据类中有10个参数,我想用空构造函数初始化数据类,并使用setter仅为少数参数设置值,并将对象传递给服务器 .
data class Activity(
var updated_on: String,
var tags: List<String>,
var description: String,
var user_id: List<Int>,
var status_id: Int,
var title: String,
var created_at: String,
var data: HashMap<*, *>,
var id: Int,
var counts: LinkedTreeMap<*, *>,
)
用法:
这样的事情很容易
val activity = Activity();
activity.title = "New Computer"
sendToServer(activity)
但它需要在创建构造函数时传递所有参数 . 我怎样才能像上面这样简化?
val activity = Activity(null,null,null,null,null,"New Computer",null,null,null,null);
sendToServer(activity)
5 回答
这里有2个选项:
如果您不依赖
Activity
类的copy
或equals
或者根本不使用自动生成的data class
方法,则可以使用常规类,如下所示:并非每个DTO都需要
data class
,反之亦然 . 事实上,根据我的经验,我发现数据类在涉及一些复杂业务逻辑的领域特别有用 .如果你给 default values to all the fields - 空构造函数是由Kotlin自动生成的 .
你可以简单地打电话:
与@miensol一起回答,让我添加一些细节:
如果您想要使用数据类的Java可见空构造函数,则需要明确定义它 .
使用默认值构造函数说明符非常简单:
这意味着使用此技巧,您现在可以使用标准Java序列化程序(Jackson,Gson等)序列化/反序列化此对象 .
如果为每个主构造函数参数提供默认值:
从你可以在没有参数的情况下调用它的实例的类或者你那个时刻的参数
Kotlin中数据类的非空辅助构造函数:
Kotlin中数据类的空辅助构造函数: