这里是非常简单的代码: @Parcelize data class Inner(val a: Int): Parcelable @Parcelize data class Test(val a: Int, val inner: Inner?): Parcelable @RunWith(AndroidJUnit4::class) class ExampleInstrumentedTest { @Test fun testParcel() { val test = Test(0, null) val parcel = Parcel.obtain() parcel.writeParcelable(test, test.describeContents()) } } 我有可空的属性Test.inner 。 如果它不为空,代码工作正常,但是当它为空,那么我有例外: java.lang.NullPointerException: Attempt to invoke interface method ‘void android.os.Parcelable.writeToParcel(android.os.Parcel, int)’ on a null object […]
我已经读过,你需要为实体类使用kotlin-maven-noarg编译器插件,以便它生成默认参数少的构造函数。 但是应用程序不会以下列错误开始: 没有实体的默认构造函数 你能告诉我我做错了什么吗? pom.xml中: 4.0.0 {…} src/main/java src/main/resources src/test/java src/test/resources maven-compiler-plugin 3.1 1.8 1.8 org.jetbrains.kotlin kotlin-maven-plugin ${kotlin.version} compile compile compile test-compile test-compile test-compile org.apache.maven.plugins maven-compiler-plugin compile compile compile testCompile test-compile testCompile kotlin-maven-plugin org.jetbrains.kotlin ${kotlin.version} jpa jpa:annotation=javax.persistence.Entity org.jetbrains.kotlin kotlin-maven-noarg ${kotlin.version} {…} 4.12 1.1.0 {…} org.jetbrains.kotlin kotlin-stdlib ${kotlin.version} org.jetbrains.kotlin kotlin-test ${kotlin.version} test org.jetbrains.kotlin kotlin-reflect ${kotlin.version} 测试课: […]
我是Kotlin的新手,我希望将我的java模型类与数据类进行转换,这有可能吗? 我的意思是Ormlite是否支持这个?
我新使用葫芦来测试Android应用程序。 我实现了一些测试来validationAndroid Studio 3.0.1和Gradle版本2.3.3实现的apk,并且工作正常。 当我尝试执行测试来validation使用Gradle版本3.0.1和Kotlin(相同的AS)创建的新应用程序时出现问题。 执行命令: bundle exec calabash-android run app-release.apk 我得到这个: adb: failed to install /Users/sonia/Documents/calabash-test-android/app-release.apk: Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI] Scenario: As a valid user I can log into my app #features/my_first.feature:3 undefined method `chomp’ for nil:NilClass (NoMethodError) ./features/support/app_installation_hooks.rb:18:in `Before’ Will not start test server because of previous failures. (RuntimeError) ./features/support/app_life_cycle_hooks.rb:5:in `Before’ When I press […]
我有一个DAO接口,其中我有多个实现,我想其中之一是一个房间实施( Kotlin ): interface BaseDao { fun getAll(): Single<List> fun insert(data: List) } 和我的房间(RxRoom)接口: @Dao interface RxRoomBaseDao: BaseDao { @Query(“SELECT * FROM some_data”) override fun getAll(): Single<List> @Insert(onConflict = OnConflictStrategy.REPLACE) override fun insert(data: List) } 它看起来像房间编译器试图编译BaseDao而不是RxRoomBaseDao和抱怨error: Dao class must be annotated with @Dao和两种方法error: A DAO method can be annotated with only one of the following:Insert,Delete,Query,Update […]
我有Kotlin代码和Java测试代码。 由于Kotlin和Mockito不是最好的朋友,所以我没有将测试代码迁移到Kotlin 。 在Kotlin我有块types的方法。 例如: open fun getProductInfo(resultListener: (List)->Unit, errorListener: (Throwable)->Unit) { … } 现在我想在Java测试中存储这个方法。 什么是types的Java相当于什么? 换句话说,我应该写下面的代码: doAnswer(invocation -> { ??? resultListener = (???) invocation.getArguments()[0]; // call back resultListener return null; }).when(api).getProductInfo(any(), any());
以下片段显示了从不同来源获得的Kotlin KClass参考的测试相等性的结果。 他们的字符串表示是相同的。 但是他们的java类是不同的。 预计c , c0和c1是相等的。 但由于某种原因,他们不是。 有一些细微差别,或者是一个错误? 如果这不是一个错误什么是可靠的方法来测试KClass es的平等? fun main(args: Array) { val c = Int::class fun test(v0: Any, v1: Any) { val c0 = v0.javaClass.kotlin val c1 = v1.javaClass.kotlin println(“c= $c; c0= $c0; c1= $c1”) // c= class kotlin.Int; c0= class kotlin.Int; c1= class kotlin.Int println(“c= ${c.java}; c0= ${c0.java}; c1= ${c1.java}”) […]
我有两个完全相同大小的位图,我想在两者之间find最小的变化区域。 这是一个Kotlin相当于我正在做的事情: var minX = Int.MAX_VALUE var minY = Int.MAX_VALUE var maxX = 0 var maxY = 0 for (i in 0 until cols) { for (j in 0 until rows) { if (bitmapOne.getPixel(i, j) != bitmapTwo.getPixel(i, j)) { if (i maxX) maxX = i if (j maxY) maxY = j } } } 我所需要的只是矩形的四个点,它们是最小的变化区域。 […]
Kotlin全新,我怎么find一个数字的因素? 例如24应该给1,2,3,4,6,8,12,24? 我知道如何做这个Python列表的理解,但不知道如何在Kotlin正确做到这一点。
如何在另一项活动中停止我的服务? 我在summaryActivity中启动服务 SocketServiceIntent = new Intent(this, SocketService.class); SocketServiceIntent.putExtra(“MessageParcelable”, mp); startService(SocketServiceIntent); 并从我的summaryActivity启动我的statusActivity Intent intent = new Intent(SummaryActivity.this, StatusActivity.class); intent.putExtra(“MessageParcelable”, mp); startActivity(intent); 我的问题是,我不知道如何可以给我的状态活动SocketServiceIntent。