Reputation: 407
In the below code example, I implemented IMessage
from java to kotlin Message
. But when I pass a value to message
variable it says 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()
Upvotes: 1
Views: 238
Reputation: 1057
Please change user object to IUser as I am not sure what it contains.
Interface
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);
}
Message Class
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())
Result
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
Upvotes: 2
Reputation: 407
In the below code is my answer, but I think I broke the rule of kotlin getter setter, because I created 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())
Upvotes: 1