我不明白为什么可以在 Kotlin 的类之外编写函数?这是一个好习惯吗?
例如,在 Kotlin 中可以在我的 MainActivity
类之外编写一个函数:
fun hello(){}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
hello()
}
}
在 Java 中,这是不可能的!这不是面向对象语言的正常工作方式,对吧?
在文档中,他们谈到了经典函数的 Local Functions 和定义在类或对象中的函数的 Member Functions,但他们没有解释什么时候是最好使用其中一个。
最佳答案
In Java, this is impossible! That's not how an object-oriented language works normally, right?
稍等片刻,重新考虑一下 java 静态方法的本质。一个类应该是对象的蓝图,描述它们的行为和状态。但是你可以调用静态方法而不创建任何实例。
这如何适应面向对象的图景?静态方法如何“属于”它声明的类?
实际上,静态方法在 Java 中是一种 hack,它们污染和滥用类的 OOP 概念。但是这些年你已经习惯了,所以你不再有这种感觉了。
从概念上讲,静态方法是顶级函数,Java 使用其声明类的名称作为其命名空间。与此相反,Kotlin 允许您声明顶级函数,而不会滥用类进行命名空间。
https://stackoverflow.com/questions/49013996/
相关文章:
kotlin - 如果事件是用 Kotlin 编写的,则按钮 onClick 属性为无
kotlin - 协程 : runBlocking vs coroutineScope
java - 如何使用 Maven 编译 Java+Kotlin 项目?
android - Kotlin - 如何在 "lateinit"和 "nullable varia
properties - 将静态变量从 Java 转换为 Kotlin
java - Kotlin - 为非数据类生成 toString()
android - Kotlin 惰性属性和值重置 : a resettable lazy dele