как создать экземпляр объекта из класса в kotlin - PullRequest
0 голосов
/ 09 сентября 2018

Я изучаю Kotlin, и я погуглил, как создать класс в Kotlin. Итак, я создал следующий класс в качестве теста. В основном задании я пытаюсь создать объект из класса Board, но получаю следующую ошибку:

classifier Board does not have a companion object

Пожалуйста, дайте мне знать, как создать объект класса Board?

MainActivity

class ActMain : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.layout_act_main)

    Board board = new Board(name = "ABC");
}
}

Board.kt

data class Board(val name: String) {
    var age: Int = 0
}

Ответы [ 4 ]

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

В отличие от Java, в Котлине это правильный путь

MainActivity.kt

class ActMain : AppCompatActivity() {
 override fun onCreate(savedInstanceState: Bundle?) {
 super.onCreate(savedInstanceState)
 setContentView(R.layout.layout_act_main)

 val board = Board("ABC")
 board.age = 12
 }
}

Board.kt

class Board(val name: String) {
var age: Int = 0
}
0 голосов
/ 09 сентября 2018

Котлин не использует new.

Board board = new Board(name = "ABC");

неверно. Используйте

val board = Board("ABC")

Ваш код отражает синтаксис Java ... вроде. Kotlin имеет вывод типа, поэтому вам не нужно указывать тип класса. Однако, если вы укажете его, он отличается от Java:

val board: Board = Board("ABC")

Точки с запятой также не используются в Kotlin, хотя они не нарушат компиляцию, если ты их используешь.

name = "ABC" просто недопустимый синтаксис, независимо от того, является ли он Java или Kotlin. На самом деле это (из @hotkey): https://kotlinlang.org/docs/reference/functions.html#named-arguments

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

в котлине

когда вы хотите объявить новый объект, вы можете сделать это следующим образом.

val board = Board("ABC")

если вы объявляете объект с помощью ключевого слова val . это выглядит, как вы используете final в Java. переменная, которую вы объявили, не может воссоздать снова.

var board = Board("ABC")

если вы используете var, чтобы объявить, что это выглядит как обычная переменная в Java

В любом случае в kotlin вы увидите что-то, чего нет в java, например функция определения объема как ссылка ниже. это поможет вам легче написать свой код.

https://kotlin.guide/scoping-functions

Надеюсь, это поможет:)

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

попробуй забыть ява

val board = Board("name")
...