Реализация Java-интерфейса для класса Kotlin - PullRequest
0 голосов
/ 11 сентября 2018

Сценарий / Проблема

В приведенном ниже примере кода я реализовал IMessage от java до kotlin 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
    }

}

Вопрос

  1. Какая часть кода неверна?

Ожидаемый результат

 val message = Message()
 message.id = ""
 message.text = ""
 message.user = Author()

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Пожалуйста, измените пользовательский объект на 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 / Объект первого сообщения: 1GaneshHello WorldTue 11 сентября 12:30:40 GMT + 05: 30 2018

09-11 12: 30: 40.188 29575-29575 / com.sysanenet.myapplication E / После объекта сообщения: 2TikoneHello KotlinTue 11 сентября 12:30:40 GMT + 05: 30 2018

0 голосов
/ 11 сентября 2018

В приведенном ниже коде мой ответ, но я думаю, что нарушил правило установщика геттеров kotlin, потому что я создал установщик ..

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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...