草庐IT

java - 注释中不允许从伴生对象分配静态最终值

我在Kotlin中创建了一个类:classExtras{companionobject{varEXTRA_NAME:String?=nullfunsetExtraName(){varextraName:String?=null//...EXTRA_NAME=extraName}}}我在Application类的onCreate()中调用setExtraName()。然后将EXTRA_NAME传递给方法的注解(在Java中定义):staticfinalStringEXTRA_NAME=Extras.Companion.getEXTRA_NAME();@Extra(EXTRA_NAME)v

android - Kotlin 中每个类只允许有一个伴生对象

我正在从Java转向kotlin进行Android开发。当我在Kotlin中搜索等效的Java静态方法时,我发现伴随对象是。但问题是在kotlin中创建多个静态方法时。我收到这些错误,每个类只允许一个伴随对象。 最佳答案 您可以将多个方法和属性放在object中.它们就像类,但它们只有一个实例。classA{companionobject{funa(){}funb(){}valx=42vary="foo"}} 关于android-Kotlin中每个类只允许有一个伴生对象,我们在Stack

Kotlin机制总结

什么是kotlin?kotlin是静态类型的编程语言,运行于jvm之上。如果在编译时知道变量的类型,则语言是静态类型的,在运行时知道变量类型,则语言是动态类型。什么是extension(扩展)函数Kotlin可以对一个类的属性和方法进行扩展,对被扩展的类代码本身不会造成任何影响。扩展函数可以为已经存在的类添加新的方法,并且不会修改原来的类。classMainActivity:AppCompatActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setConten

kotlin - 伴生对象比普通对象有什么优势?

Kotlin代码如下:classFoo{companionobject{funa():Int=1}funb()=a()+1}可以简单地改成objectFooStatic{funa():Int=1}classFoo{funb()=FooStatic.a()}我知道伴生对象可以用作真正的java静态函数,但是使用伴生对象还有其他优点吗? 最佳答案 主要区别之一是成员的可见性。在伴随对象中,包含类的可见性就像成员是类的一部分一样-对于原始对象而言并非如此。下面的例子表明你不能使用“对象”来实现类的私有(private)静态内部。packa

kotlin - 伴生对象比普通对象有什么优势?

Kotlin代码如下:classFoo{companionobject{funa():Int=1}funb()=a()+1}可以简单地改成objectFooStatic{funa():Int=1}classFoo{funb()=FooStatic.a()}我知道伴生对象可以用作真正的java静态函数,但是使用伴生对象还有其他优点吗? 最佳答案 主要区别之一是成员的可见性。在伴随对象中,包含类的可见性就像成员是类的一部分一样-对于原始对象而言并非如此。下面的例子表明你不能使用“对象”来实现类的私有(private)静态内部。packa

kotlin - 实例 val 是否比伴生对象 val 更 coSTLy?

是否有充分的理由(在性能方面)替换a:valSOME_CONST="value"与companionobject{valSOME_CONST="value"}添加@JvmStatic注释会改变结果吗? 最佳答案 是的,val存储在companionobject中更有效。您可以使用Kotlinbytecodeviewer找出这些选项被编译成什么。以下是我注意到的可能会影响性能的事情:Companionobjectval只存储一次,不像实例val,它实际上存储在每个实例中,因此增加了实例的内存占用(String字面量isstoredin

static - Kotlin 对象 vs 伴生对象 vs 包作用域方法

我在Kotlin中编写了这些方法并分析了字节码:情况1classA{objectb{fundoSomething(){}}}情况2classA{companionobjectb{fundoSomething(){}}}情况3fundoSomething(){}字节码结果情况一:classTest$asb,publicfinaldoSomething()I情况2:类Test$Companion,publicfinaldoSomething()I情况3:类TestKt,publicfinalstaticdoSomething()I我的问题是:我有一个枚举类,我想返回一个给定枚举变量的枚举实

kotlin - 在 kotlin 中命名伴生对象有什么意义

companionobjects的文档有以下例子classMyClass{companionobjectFactory{funcreate():MyClass=MyClass()}}这里的Factory是伴生对象的name。然后它继续说:Thenameofthecompanionobjectcanbeomitted,inwhichcasethenameCompanionwillbeused:但是,我没有看到使用伴随对象名称的示例。由于每个类只能有一个伴生对象(否则会出现每个类只允许一个伴生对象错误),所以这个名字对我来说就像是一些非常无用的语法糖。伴生对象的名称实际上可以用来做什么?为