使用说明
interface IHello {
fun hello()
}
@RegisterService(value = IHello::class)
class AHello : IHello {
override fun hello() {
Log.d("Hello", "AHello")
}
}
//key用来区分不同的实现,默认key是"default",不能定义多个相同key
@RegisterService(value = IHello::class, key = "key_b_hello")
class BHello : IHello {
override fun hello() {
Log.d("Hello", "BHello")
}
}
fun hello() {
ServiceLoader.get(IHello::class.java)?.hello() //AHello key是"default", 所以这里调用AHello
ServiceLoader.get(IHello::class.java, "key_b_hello")?.hello() //BHello key是"key_b_hello", 所以这里调用BHello
}