class MainApplication : Application() {
companion object {
operator fun get(context: Context): MainApplication {
return context.applicationContext as MainApplication
}
}
}
MainApplication application = MainApplication.get(mContext);
Error:(27, 54) error: cannot find symbol method get(Context)
您可以将@jvmstatic
注释添加到companion对象中的方法,以使Kotlin生成一个静态方法。
class MainApplication : Application() {
companion object {
@JvmStatic fun get(context: Context): MainApplication {
return context.applicationContext as MainApplication
}
}
}
然后您可以像转换到Kotlin之前一样从Java访问它:
MainApplication application = MainApplication.get(mContext);
编辑:我觉得有必要添加一些我最近学到的东西:@jvmstatic
实际上不会移动生成方法的位置。它通过在伴生对象上的方法之外为Java生成一个静态方法来复制它。就我个人而言,我认为这不是很好,它可能会根据用例产生一些影响,所以值得了解一些事情。
我试图在其他类中调用一个类的静态函数,但在kotlin中我不能创建一个静态函数,我必须创建一个伴生对象,在其中我必须定义我的函数,但在这样做的时候我不能访问父类变量,有什么方法可以在kotlin中实现这一点。 我想访问有趣的returnString()类的静态函数,就像我们在java中做的一样,如果有谁已经实现了这一点,请帮助。
带有同伴对象的简单示例类 值测试可以通过访问,但如何从MyClass的实例访问?如果我有,那么我如何从sample访问测试?不正确....有没有办法? Java,C++,python等都有很简单的解决方案...(我将为每个有帮助的is提供代码示例),我认为kotlin会有一个比使用Java更好的解决方案。 对于在没有对象实例(如工厂)的情况下访问类属性,kotlin companion objec
问题内容: 我有这段Java代码: 我想在Kotlin中获得MainActivity对象。自动转换在处中断。 问题答案: 您可以通过使用合格的来获得对Kotlin中对象的引用。例如:
我想知道是否可以在同伴对象中使用类的属性。例如,以贝娄为例: 我不能通过c1或C2调用changeAge()函数。我可以使用changeAge的唯一地方是通过Person1.changeAge(),当Person1还没有用适当的构造函数实例化时。我想知道这些动作是不是有其他的选择,或者是没有,有同伴对象有什么意义呢
我有一个类包含如下所示同伴对象。 我想在运行时修改同伴对象的属性。我将在这个类中添加数百个属性。所以我要做动态。我使用了这个方法,得到如下错误。
“伴生对象”的本意是什么?到目前为止,我使用它只是为了在需要时替换Java的。 null 这似乎是一种不正常的做法。有什么更好的办法?