kotlin - 接口作为 Kotlin 中类的依赖项是什么意思?
问题描述
interface SomeInterface {
fun someFunction()
}
class SomeClass(private val someInterface: SomeInterface) {
}
这是什么意思?据我所知,接口不能实例化对象,如果可以,我应该在哪里实现someFunction()
?
解决方案
您不能SomeInterface
直接实例化是正确的,但您可以将接口的实现传递给SomeClass
. 这种方式SomeClass
可以使用someFunction()
但不关心接口的低级实现细节(又名多态)。
interface SomeInterface {
fun someFunction()
}
class SomeClass(private val someInterface: SomeInterface) {
fun doSomething() = someInterface.someFunction()
}
class SomeImplementation(): SomeInterface {
override fun someFunction() {
println("did something")
}
}
fun main() {
val someClass = SomeClass(SomeImplementation())
someClass.doSomething()
}
推荐阅读
- fabricjs - 无法使用 FabricJs 2 管理对象对齐选择
- sql - 使用递增值更新列
- sql-server - 如何在 PHP 7+ 中为 SQL Server 启用 ODBC Driver 17?
- java - 为什么 java 方法 Enum.valueof 调用枚举类型构造函数?
- eclipse - Eclipse 项目中的 Java 类在创建时显示错误
- ruby-on-rails - 只显示属于父母的记录
- typescript - getDownloadURL() 返回变量的未定义结果
- google-chrome - 有没有办法(可能是快捷方式)在进入 chrome 检查器后使用键盘选择任何元素?
- python - TfidfVectorizer 是否隐含地阈值其适合大型数据集的输出?
- c# - FakeItEasy 未验证对完整框架 SignalR 测试的调用