使用vararg调用Java函数,而不是在Kotlin中编译
我试图从Kotlin调用Java方法,但编译器无法find正确的签名。
该方法有2个签名:
Observable createQuery(@NonNull final String table, @NonNull String sql, @NonNull String... args) Observable createQuery(@NonNull final Iterable tables, @NonNull String sql, @NonNull String... args)
然后在kotlin我只是想打电话给我,这对我来说似乎是完全有效的:
db.createQuery("users", "select * from users")
但编译器说
None of the following functions can be called with the arguments supplied: public open fun createQuery(android.support.annotation.NonNull tables: kotlin.(Mutable)Iterable!, android.support.annotation.NonNull sql: kotlin.String!, android.support.annotation.NonNull vararg args: kotlin.String!): rx.Observable! defined in com.squareup.sqlbrite.BriteDatabase public open fun createQuery(android.support.annotation.NonNull table: kotlin.String!, android.support.annotation.NonNull sql: kotlin.String!, android.support.annotation.NonNull vararg args: kotlin.String!): rx.Observable! defined in com.squareup.sqlbrite.BriteDatabase
我读了Kotlin和Java的方法与可变参数有一些问题,有没有办法解决,而不使用Java类作为桥梁?
这是因为该对象是BriteDatabase?
types的BriteDatabase?
,所以我必须用db!!
来使用它db!!
或db?
。
也许错误信息应该改善!