object Singleton : SingletonInterface { private object SingletonHolder { private val instance = Singleton() } fun getInstance(): Singleton = SingletonHolder.instance } 在这个例子中,我们定义了一个名为Singleton的对象,它实现了SingletonInterface接口(假设存在该接口)。在对象内部,我们创建了一个名为SingletonH...
@ModuleobjectMyModule{@Provides@Singleton@JvmStaticfunprovideSomething(anObject:MyObject):MyInterface{returnmyObject}} 这又让你再一次明白了伴生对象仅仅是单例对象的一个特例。但它至少表明与许多人的认知是相反的,你不一定需要一个伴生对象来维护静态方法或静态变量。你甚至根本不需要一个对象来维护,只要考虑顶...
public interface ITask : Context.Element { public companion object Key : Context.Key<ITask> //提供默认的接口实现 fun test() } public class Test : ITask { override fun test() { println("call test") } override val key: Context.Key<*> get() = ITask //ITask == ITask.Key } 1. 2. ...
interfaceMyInterface{funoperateVariable()}funoperateClass(interfaceObject:MyInterface)=interfaceObject.operateVariable()classMyClass3{companion object:MyInterface{override funoperateVariable(){//do something...}}}funmain(vararg args:String){operateClass(MyClass3)//MyClass3 is now as the instance of M...
接口使用关键字Interface,示例如下: /** * 定义一个接口 */interfaceInterfaceDemo{//没有实现的方法funaction()//实现了方法funaction2(){println("我是action2。")}} 抽象类和接口的使用,示例如下: /** * 继承了抽象类AbstractDemo和接口InterfaceDemo ...
}// 没有抽象函数的接口的对象,引用方式Test.threeobjectthree : NoFuncobjecttwo : HaveFunc {overridefunmyPrint(){ TODO("Not yet implemented") } } }// 这是有方法的接口interfaceHaveFunc{funmyPrint()}// 没有抽象函数的接口interfaceNoFunc{ ...
object expressions大多用在需要在匿名类中重写多个方法的时候。 object关键字还可以用来声明匿名内部类, 该匿名内部类不像java只能实现一个接口或继承一个对象,它可以实现多个接口。 nterface SchoolWork { fun getCore() } interface HomeWork { fun getProgress() ...
interface Printer { fun print() } 那么,可以直接定义一个fun interface Printer就可以了: fun interface Printer { fun print() } 编译器会帮忙做转化。 扩展阅读Functional (SAM) interfaces。 关键字object的妙用 关键字object用以方便创建匿名对象的场景,如匿名对象,单例以及静态内部类。
object three : NoFunc object two : HaveFunc { override fun myPrint() { TODO("Not yet implemented") } } } // 这是有方法的接口 interface HaveFunc { fun myPrint() } // 没有抽象函数的接口 interface NoFunc{ } 1. 2. 3. 4. ...
关键字:interface 定义格式: interface 接口名{ ... } 2.1.2、用法 关键字:冒号(:),这一点是和Java不同的。Java中使用接口使用的是implements关键字 在Kotlin中冒号(:)使用的地方很多: 用于变量的定义 用于继承 用于接口 方法的返回类型声明 使用格式: class 类名: 接口名{ // 重写的接口函数、属性等 ...