我正在学习Kotlin,并且用Google搜索了如何在Kotlin中创建课程。因此,我创建了下面的类作为测试。 在主要活动中,我试图从类Board实例化一个对象,但是出现以下错误:
classifier Board does not have a companion object
请让我知道如何初始化班级董事会的对象?
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
}
答案 0 :(得分:3)
科特林不使用new
。
Board board = new Board(name = "ABC");
不正确。使用
val board = Board("ABC")
您的代码反映了Java语法。 Kotlin具有类型推断功能,因此您无需指定类类型。但是,如果您指定它,则它与Java不同:
val board: Board = Board("ABC")
在Kotlin中也不使用分号,尽管使用分号不会破坏编译。
实际上,它是(来自@hotkey):https://kotlinlang.org/docs/reference/functions.html#named-arguments name = "ABC"
不管是Java还是Kotlin都是无效的语法。
答案 1 :(得分:0)
尝试忘记Java
val board = Board("name")
答案 2 :(得分:0)
科特林
当您要声明新对象时,yon可以这样做。
val board = Board("ABC")
如果使用 val 关键字声明对象。就像您在Java中使用 final 一样。您声明的变量无法重新创建。
var board = Board("ABC")
如果使用var声明它,则在Java中看起来像普通变量
无论如何,在Kotlin中,您都会看到它在Java中不包含的内容,例如 作用域功能如下所示。它将帮助您更轻松地编写代码。
https://kotlin.guide/scoping-functions
我希望这个帮助:)
答案 3 :(得分:0)
与Java不同,在Kotlin中,这是正确的方法
MainActivity.kt
setup(
name=PROJECT,
version=version,
packages=get_packages(PROJECT),
package_data=get_package_data(PROJECT),
python_requires=">= 3.5",
)
Board.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
}
}