场景/问题
在下面的代码示例中,我实现了从java到kotlin IMessage
的Message
。但是当我将值传递给message
变量时,它说val cannot be reassigned
val message = Message()
message.user = Author()
message.text = ""
messate.createdAt = Date()
message.id = ""
public interface IMessage {
String getId();
String getText();
IUser getUser();
Date getCreatedAt();
}
class Message : IMessage {
private var id: String = ""
private var createdAt = Date()
private var user = Author()
private var text: String = ""
override fun getId(): String {
return id
}
override fun getCreatedAt(): Date {
return createdAt
}
override fun getUser(): IUser {
return user
}
override fun getText(): String {
return text
}
}
题
预期结果
val message = Message()
message.id = ""
message.text = ""
message.user = Author()
最佳答案
请更改用户对象为IUser,因为我不确定它包含的内容。
界面
public interface IMessage {
String getId();
void setId(@NonNull String id);
String getText();
void setText(@NonNull String text);
String getUser();
void setUser(@NonNull String user);
Date getCreatedAt();
void setCreatedAt(@NonNull Date createdAt);
}
消息类
class Message : IMessage {
override fun setId(id: String) {
this.id = id
}
override fun setText(text: String) {
this.text = text
}
override fun setUser(user: String) {
this.user = user
}
override fun setCreatedAt(createdAt: Date) {
this.createdAt = createdAt
}
override fun getId(): String {
return id
}
override fun getText(): String {
return text
}
override fun getUser(): String {
return user
}
override fun getCreatedAt(): Date {
return createdAt
}
override fun toString(): String {
return StringBuilder().append(id).append(user).append(text).append(createdAt.toString()).toString()
}
private var id: String = "id"
private var createdAt: Date = Date()
private var user: String = "user"
private var text: String = "text"
}
MainActivity代码 onCreate
val message = Message()
message.user = "Ganesh"
message.createdAt = Date()
message.id = "1"
message.text = "Hello World"
Log.e("First message object ", message.toString())
message.user = "Tikone"
message.createdAt = Date()
message.id = "2"
message.text = "Hello Kotlin"
Log.e("After message object ", message.toString())
结果
09-11 11:12:30:40.188 29575-29575 / com.sysanenet.myapplication E / Firstmessage object:1GaneshHello WorldTue Sep 11 12:30:40 GMT + 05:30 2018
09-11 11:12:30:40.188 29575-29575 / com.sysanenet.myapplication E /消息对象之后:2TikoneHello KotlinTue Sep 11 12:30:40 GMT + 05:30 2018