Tag: 伴侣对象

随播广告对象 – Android是否希望将其注册为活动(?)

我有一个活动 class DummyActivity : Activity() { companion object { @JvmStatic fun onNewIntent(context: Context): Intent { val intent = Intent(context, DummyActivity.javaClass) return intent } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } 在清单中声明如下: <activity android:name=".DummyActivity"/> </application> 当我尝试启动它时,我得到: 引起:android.content.ActivityNotFoundException:无法找到显式活动类> {com.example.andrzejzuzak.visiondummyapp / com.example.andrzejzuzak.visiondummyapp.DummyActivity $ Companion}; 你有没有在你的AndroidManifest.xml中声明这个活动? 在android.support.android.app.Activity.startActivityForResult(Activity.java:3930)上的android.app.Instrumentation.execStartActivity(Instrumentation.java:1512)上的android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1794)。在android.app.Activity.startActivityForResult(Activity.java:3890)上的android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79)上的v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50)在android.app.Activity.startActivity(Activity.java:4181)上的android.app.Activity.startActivity(Activity.java:4213)上的.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859) example.andrzejzuzak.visiondummyapp.MainActivity.onActivityResult(MainActivity.kt:85)at android.app.Activity.dispatchActivityResult(Activity.java:6456)at android.app.ActivityThread.deliverResults(ActivityThread.java:3695)at android.app .ActivityThread.handleSendResult(ActivityThread.java:3742 )在android.app.ActivityThread.-wrap16(ActivityThread.java)在android.app.ActivityThread $ h.handleMessage(ActivityThread.java:1393)在android.os.Handler.dispatchMessage(Handler.java:102)在android。 os.Looper.loop(Looper.java:148)at […]

如何从kotlin的对象实例访问伴侣对象?

伴随对象的简单样本类 class MyClass{ companion object{ val test = 25 } } 值测试可以通过MyClass.test访问,但是如何从MyClass的实例访问? 如果我有val sample = MyClass() ,那么我如何从样本访问测试? sample::class.test是不正确的….有没有办法? 提出的问题是:为什么不简单地使用MyClass.test? 我更喜欢把问题保持在“如何”而不是“为什么”,但是因为有人问我会尝试“为什么”。 这同样适用于这些方法。 为什么不在类中有静态函数,只需调用Class.function()并将对象作为参数之一传递? 考虑使用作为更抽象的基类传递的对象时,您正在使用的对象有几个可能的类。 你可以做一个switch和每个possbile类,并以适当的方式访问相应类的值(或函数),但多态的想法是你应该能够访问类的方法(即使函数方法代码对于同一个类的所有成员而言),或者是来自该类的一个对象实例的类的所有成员共有的值。 到目前为止,我的解决方案是简单地实现相当于MyClass与静态测试 public class MyClass { static Integer test = 25; public Integer testGetter(){ return test;} } 在Java,C ++,python等中有这样简单的解决方案…(我将提供代码样本,这对每个人都有帮助),我认为在使用Java时,kotlin会有更好的解决方案。 kotlin伴侣对象提供了静态的替代(有优势),用于在没有对象实例的情况下访问类属性的情况(如工厂),但是在对象实例可用的情况下还有另外一种静态的用法,静态是合适的,因为单个属性可以被类的所有成员共享,并且该属性不是实例相关的。

伴随对象之外的访问方法 – Kotlin

我对kotlin来说是个新手,我想知道是否有可能,并且如果最好的做法是从协同对象中访问协同对象之外的方法和变量。 例如 class A { fun doStuff(): Boolean = return true companion object{ public fun stuffDone(): Boolean = return doStuff() } } 或类似的东西 谢谢

Kotlin:一个类中的对象和伴侣对象之间的区别

kotlin中的一个对象和同伴对象之间有什么区别? 例: class MyClass { object Holder { //something } companion object { //something } } 如果包含的参数/方法与它的类紧密相关,我已经阅读过,应该使用伴随对象。 但是为什么还有在班上宣布一个正常的对象的可能性呢? 因为它的行为完全像伴侣,但它必须有一个名字。 在它的“静态”(我来自Java方面)生命周期中可能有不同吗?

为什么我没有看到扩展类的伴侣对象组件?

我有一个抽象类: abstract class Vec2t 和扩展类: class Vec2 : Vec2t Vec2t有以下伴侣对象 : companion object { @JvmField val length = 2 } 但是,当我输入Vec2.length ,那么它被标记为未解析的参考… 为什么? 我错过了什么?

应用程序崩溃,因为lateinit应用程序实例未初始化

我想保存一个应用程序实例,并在databaseHelper的构造函数中使用,但是当我的活动试图实例化databaseHelper时,我得到以下例外: FATAL EXCEPTION: main Process: com.weatherupp.weatherupp, PID: 29092 java.lang.ExceptionInInitializerError at com.weatherupp.weatherupp.ui.MainActivity.onCreate(MainActivity.kt:27) […] Caused by: kotlin.UninitializedPropertyAccessException: lateinit property instance has not been initialized 导致例外的代码如下所示: MainActivity { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val provider = ForecastProvider() […] } ForecastProvider具有以下伴随对象: companion object { val SOURCES = listOf(ForecastServer(), ForecastDb()) } ForecastDb的构造函数引用ForecastDbHelper的一个实例,其构造函数引用App.instance,声明如下: class App : Application() { companion object […]

我怎样才能引用从Java的伴侣对象?

我有一个混合的项目, Java和Kotlin类,我想知道如何从Java类引用companion objects 。

伴侣对象隐藏类 – 错误或功能?

在Kotlin中,以下代码似乎是合理的: data class Foo(val bar: String) { fun combine(other: Foo): Foo { return Foo(bar + other.bar) } companion object Foo { fun someHelper() {} } } 但是,它不会编译:类型Foo绑定到Foo.Foo而不是Foo ! 这是(语言设计或编译器)的错误,还是这是一个功能? 如果是后者,伴侣对象在场的情况下实现的习惯用法是什么? 当然,我会考虑一个解决方法: fun combine(other: my.package.Foo): my.package.Foo { return Foo(bar + other.bar) } 但那不是太好,现在呢?

kotlin,如何将扩展函数添加到已定义的类伴侣对象中

我想添加一些扩展功能到一个已经定义的类的同伴对象,像 fun Toast.Companion.showImageToast(str : String) { } 也喜欢在界面上做同样的事情,例如 fun Runnable.Companion.mainHandler() { } 我已经查阅了文档,只是为用户定义的类中的伴随对象定义扩展函数的语法,而不是没有伴随对象的类 我可以有任何机会在科特林做到这一点?

Kotlin对象vs伴随对象与包范围方法

我已经在Kotlin中写了这个方法,并分析了字节码: 情况1 class A { object b { fun doSomething() {} } } 情况2 class A { companion object b { fun doSomething() {} } } 情况3 fun doSomething() {} 字节码结果 情况1:class Test$asb , public final doSomething()I 情况2:class Test$Companion , public final doSomething()I 情况3:class TestKt , public final static doSomething()I 我的问题是: 我有一个枚举类,我想返回一个枚举instace给定一个枚举变量,例如,findById (enum(id, color)) 。 […]