如何在 kotlin 中从 class 实例化一个对象
how to instantiate an object from a class in kotlin
我正在学习 Kotlin,我在 google 上搜索了如何在 kotlin 中创建 class。所以,我创建了下面的 class 作为测试。
在主要 activity 中,我试图从 class 板上实例化一个对象,但出现以下错误:
classifier Board does not have a companion object
请告诉我如何实例化 class 板的对象?
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
}
试着忘记java
val board = Board("name")
Kotlin 不使用 new
。
Board board = new Board(name = "ABC");
不正确。使用
val board = Board("ABC")
您的代码反映了 Java 语法...有点。 Kotlin 有类型推断,所以你不需要指定 class 类型。但是,如果您指定它,它与 Java:
不同
val board: Board = Board("ABC")
分号在 Kotlin 中也不常用,尽管如果您使用它们不会破坏编译。
name = "ABC"
只是无效语法,无论它是 Java 还是 Kotlin。 实际上是(来自@hotkey):https://kotlinlang.org/docs/reference/functions.html#named-arguments
in kotlin
当你想声明新对象时,你可以这样做。
val board = Board("ABC")
如果您使用 val 关键字声明对象。它看起来像您在 java 中使用 final。您声明的变量无法重新创建。
var board = Board("ABC")
如果你使用 var 声明它在 java
中看起来像普通变量
无论如何,在 kotlin 中,您会看到 java 中不包含的内容,例如
作用域函数如下 link。它将帮助您更轻松地编写代码。
https://kotlin.guide/scoping-functions
希望对您有所帮助:)
不同于Java,在Kotlin中这是正确的方式
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
}
我正在学习 Kotlin,我在 google 上搜索了如何在 kotlin 中创建 class。所以,我创建了下面的 class 作为测试。 在主要 activity 中,我试图从 class 板上实例化一个对象,但出现以下错误:
classifier Board does not have a companion object
请告诉我如何实例化 class 板的对象?
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
}
试着忘记java
val board = Board("name")
Kotlin 不使用 new
。
Board board = new Board(name = "ABC");
不正确。使用
val board = Board("ABC")
您的代码反映了 Java 语法...有点。 Kotlin 有类型推断,所以你不需要指定 class 类型。但是,如果您指定它,它与 Java:
不同val board: Board = Board("ABC")
分号在 Kotlin 中也不常用,尽管如果您使用它们不会破坏编译。
实际上是(来自@hotkey):https://kotlinlang.org/docs/reference/functions.html#named-argumentsname = "ABC"
只是无效语法,无论它是 Java 还是 Kotlin。
in kotlin
当你想声明新对象时,你可以这样做。
val board = Board("ABC")
如果您使用 val 关键字声明对象。它看起来像您在 java 中使用 final。您声明的变量无法重新创建。
var board = Board("ABC")
如果你使用 var 声明它在 java
中看起来像普通变量无论如何,在 kotlin 中,您会看到 java 中不包含的内容,例如 作用域函数如下 link。它将帮助您更轻松地编写代码。
https://kotlin.guide/scoping-functions
希望对您有所帮助:)
不同于Java,在Kotlin中这是正确的方式
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
}