[英]Implementation of java interface to Kotlin class
在下面的代碼示例中,我實現了從java到kotlin Message
IMessage
。 但是當我將值傳遞給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 Code 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 12:30:40.188 29575-29575 / com.sysanenet.myapplication E / First message object:1GaneshHello WorldTue Sep 11 12:30:40 GMT + 05:30 2018
09-11 12:30:40.188 29575-29575 / com.sysanenet.myapplication E / After message object:2TikoneHello KotlinTue Sep 11 12:30:40 GMT + 05:30 2018
在下面的代碼是我的答案,但我想我打破了kotlin getter setter的規則,因為我創建了setter ..
class Message : IMessage {
private var id: String? = null
private var text: String? = null
private var user: IUser? = null
private var createdAt: Date? = null
fun setId(id: String) {
this.id = id
}
fun setText(text: String) {
this.text = text
}
fun setUser(user: IUser) {
this.user = user
}
fun setCreatedAt(createdAt: Date) {
this.createdAt = createdAt
}
override fun getId(): String? {
return id
}
override fun getText(): String? {
return text
}
override fun getUser(): IUser? {
return user
}
override fun getCreatedAt(): Date? {
return createdAt
}
}
val message = Message()
message.setId("")
message.setText("")
message.setUser(Author())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.