问题标签 [kotlin-companion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
47058 浏览

kotlin - 为什么我们使用“伴侣对象”作为 Kotlin 中 Java 静态字段的一种替代?

“伴侣对象”的本意是什么?到目前为止,我一直在使用它来static在需要时替换 Java。

我很困惑:

  • 为什么叫“伴侣”?
  • 这是否意味着要创建多个静态属性,我必须在块内将它们组合在一起companion object
  • 为了立即创建一个作用域为类的单例实例,我经常写

这似乎是一种单一的方式。有什么更好的方法?

0 投票
4 回答
4013 浏览

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

伴随对象的文档具有以下示例

Factory是伴随对象的名称。然后它继续说:

伴生对象的名称可以省略,在这种情况下Companion将使用名称:

但是,我没有看到使用伴随对象名称的示例。

由于每个类只能有一个伴生对象(否则会Only one companion object is allowed per class出错),所以这个名字对我来说就像是一些非常无用的语法糖。

伴生对象的名称实际上可以用来做什么?为什么要费心为它使用任何名称?

0 投票
3 回答
1089 浏览

scala - 伴随对象实现接口的可能性的好处

为什么在 Kotlin/Scala 中伴随对象可以实现一些接口,这有什么好处?什么时候使用此功能有用?

0 投票
1 回答
282 浏览

android - 如何在伴生对象中保留单例类对象的引用,Kotlin

我要转换的代码如下;

这是什么android studio生成的代码;

这段代码给了我错误,即;

属性必须被初始化或者是抽象的

我正在使用 libgdx 开发游戏,因此我将使用这种方法从我想要的任何地方使用 Game 对象。这是一个单例类,所以它不会泄漏任何内存。

0 投票
1 回答
325 浏览

android - Kotlin static constant field returning modified String value

I'm trying to reach a constant String value of the Class name. But I really don't understand why I get a modified String value. Here is the code that I'm working on:

In another class trying to reach the value like this:

Why Am I getting packagePath.TestClass$Companion at the end of the String value? I'm expecting to get packagePath.TestClass

Thanks

0 投票
1 回答
3431 浏览

static - 如何从 kotlin 中的伴随对象访问外部类的 javaClass.simpleName?

我希望能够从它的伴随对象访问我的类的 simpleName。

我想要这个:

打印以下输出:

实际用例在java中是这样的:

我尝试了两件事:

  1. 将 Outer 的 simpleName 分配给伴随对象的 COMPANION_TAG,然后从伴随对象的 init 和 Outer 的所有函数中使用 COMPANION_TAG。我可以从我需要的任何地方访问 COMPANION_TAG,但不幸的是,我只能通过这种方式获得“Companion”而不是“Outer”。

  2. 从伴随对象的 init 访问 Outer.OUTER_TAG。这里的问题是我找不到访问它的方法。

这是代码:

0 投票
4 回答
37204 浏览

java - 为什么以及何时将 @JvmStatic 与伴随对象一起使用?

我试图了解使用/不使用@JvmStatic 以及何时应该使用其中任何一个之间的区别。

因此,使用 Kotlin 和 Java,我可以这样做:

TestKotlin.kt

然后由 Java 调用,如下所示:

TestJava.java

但是,有这个选项2:

TestKotlin.ktv2

然后,从 Java 中调用它,如下所示:

TestJava.javav2

所以我的问题是:

  • 这两种情况在行为或内存分配方面有什么不同吗?
  • 对使用哪一个有偏好吗?
  • 是否都创建一个伪静态单例对象,就像 Java 静态一样?

谢谢!

0 投票
2 回答
3116 浏览

android - 在配套对象 Kotlin 中初始化 ImageView

我正在尝试在伴随对象中初始化 ImageView,因为我希望方法是静态的,但是我有一个错误,下面有另一种方法是我的代码

我无法初始化 bufferingIndicator 是否有任何替代方法?

0 投票
1 回答
751 浏览

kotlin - Kotlin 在主类中从伴随对象设置变量和调用方法

我是 Kotlin 的新手,我不明白是否/如何调用函数或从伴随对象设置变量:

我得到 unresolvedReference onmyVar = truemyFunc(1)

0 投票
0 回答
119 浏览

java - 伴随对象中的实例

我无法继续访问 var mBleWrapper: BleWrapper?= null 在其他活动中。有一个名为 BleWrapperUiCallbacks 的预定义 Java 接口,我怀疑它包含我需要的功能和 Java-Class BleWrapper。

我尝试了 Kotlin 伴生对象,它替代了 Java 单例,但我必须将初始化的 BleWrapper 设置为伴生对象,这实际上是不可能的,因为 BleWrapper 是如此实例化:

而这个“this”指的是当前的活动。这就是Java中关于Singleton的解决方案?!如果没有这个实例化,BleWrapper 当然总是空的。在空洞时间与 ble 设备的连接。这是 logcat: BluetoothGatt: readRssi() 我需要调用的服务也显示在 logcat 中......

有人能帮我吗?我有点绝望。我还发现了这个:在 Kotlin 中的两个活动之间传递一个对象实例