场景/问题

在下面的代码示例中,我实现了从java到kotlin IMessageMessage。但是当我将值传递给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

    07-24 09:48
    查看更多