android - 伴生对象在 Kotlin 中被过度使用?
问题描述
这里我有java代码
private static void content() {}
我转换为 Kotlin 它显示它变成了
companion object {
private fun content() {}
}
我想知道我应该将它保留在伴随对象中还是应该删除伴随对象?
解决方案
伴生对象是一个单例,它的成员可以通过包含类的名称直接访问(尽管如果您想明确访问伴生对象,也可以插入伴生对象的名称)
伴随对象在加载类时(通常是第一次被正在执行的其他代码引用)以线程安全的方式初始化。您可以省略名称,在这种情况下,名称默认为 Companion。一个类只能有一个伴生对象,伴生对象不能嵌套。
class Car(val horsepowers: Int) {
companion object Factory {
val cars = mutableListOf<Car>()
fun makeCar(horsepowers: Int): Car {
val car = Car(horsepowers)
cars.add(car)
return car
}
}
}
val car = Car.makeCar(150)
println(Car.Factory.cars.size)
伴随对象相对于静态成员的优点是它们可以从其他类继承或实现接口,并且通常表现得像任何其他单例。
推荐阅读
- python - 如何获取 UTF-8 格式的电子邮件?
- android - Android shell 使用应用程序权限
- angular - 如何使用 AWS Apollo Angular 在 ionic 3 中实现离线支持?
- node.js - 如果您的服务器水平扩展并且您无法预测客户端请求的去向,您如何管理 CSRF 令牌?
- postgresql - 如何使用 Delphi 函数从数据库中返回数据?
- google-cloud-platform - 在 Node.js 上创建存储桶的问题
- aws-lambda - 使用 Lambda 函数调用进行粘合
- javascript - 垂直居中容器
- c# - 使用“LibTiff.Net”创建 Geotiff,并添加地理信息
- spring-boot - 如何在 Camunda Spring Boot 应用程序中使用执行侦听器测试 BPMN?