我正在阅读一个现有的私人项目代码,但我不明白一些关于SQL查询的Kotlin代码。 这是DAO声明: interface UserMapper { @Select(“SELECT userId, phoneNumber FROM users WHERE phoneNumber=#{number} LIMIT 1”) fun getUserByPhoneNumber(number: String?): User } 而User是这样定义的: public class User { private int userId; private String phoneNumber; } 然后我把它称为如下: val user = userMapper!!.getUserByPhoneNumber(phonenumber) if (user != null) { doSomething() } else { doOtherthing() } 第一个问题是关于函数getUserByPhoneNumber ,它是否简单地返回用户对象? 第二个是关于构建警告: [WARNING] Condition ‘user != null’ […]
我是一个kotlin新手所以也许这是微不足道的,但我没有find任何相关的帮助,在kotlinlang.org。 为了学习一点kotlin我喜欢实现PushStream库。 我想要定义这样的基本types: typealias Receiver = (T) -> bool typealias PushStream = (Receiver) -> Unit AFAIKtypes别名不支持,所以上面只是伪代码。 所以我的第一个尝试是这样的: interface Receiver : (T) -> Boolean { } interface PushStream : (Receiver) -> Unit { } fun singleton (v : T) : PushStream { return { r : Receiver -> r (v) } } 然后科特林说: Error:(10, 12) Kotlin: […]
我想要通过Bundle传递一个数据类(包含int作为一个属性列表)到其他活动,因此我需要添加Parcelable实现到我的数据类。 任何想法如何包裹这个属性? data class Test(val id: Long, val files: List?) : Parcelable { constructor(parcel: Parcel) : this( parcel.readLong(), TODO(“files”)) override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeLong(id) } override fun describeContents(): Int { return 0 } companion object CREATOR : Parcelable.Creator { override fun createFromParcel(parcel: Parcel): Test { return Test(parcel) } override fun newArray(size: Int): […]
我最近遇到了一种情况,我的标准variables的值被默认值所替代,即使我已经使用init块的构造函数赋值了。 我试过的是: class Example(function: Example.() -> Unit) { init { function() } var name = “default name” } // assigning it like this: val example = Example { name = “new name” } // print value print(example.name) // prints “default name” 在挣扎了一下之后,我发现init块的位置很重要。 如果我把init块放在类的最后一个,它首先用缺省值初始化名称,然后调用用“new name”替换值的函数()。 如果我把它放在第一,它没有find名称,它被替换为“默认名称”时,属性被初始化。 这对我来说很奇怪 任何人都可以解释为什么发生这种事
open class A(vararg vars: String) class B(vararg vars: String):A(vars) 错误: 必需:find的字符串:数组 如何解决这个问题呢?
我正在尝试构建一个MVVM模式的Android应用程序。 除了rx-java部分,一切都很好。 在订阅中使用Observer,我有这样的错误。 Error:(28, 18) None of the following functions can be called with the arguments supplied: public final fun subscribe(p0: ((Flyer!) -> Unit)!): Subscription! defined in rx.Observable public final fun subscribe(p0: Observer!): Subscription! defined in rx.Observable public final fun subscribe(p0: Subscriber!): Subscription! defined in rx.Observable public final fun subscribe(p0: Action1!): Subscription! defined in rx.Observable […]
我有一个简单的类如下 class MainString(val msg: String) 我想注入不同的参数,所以我使用@Named限定符根据https://google.github.io/dagger/users-guide 与我的AppModule有 @Provides @Named(“Two”) fun provideTwoMainString(): MainString { return MainString(“Two”) } @Provides @Named(“One”) fun provideOneMainString(): MainString { return MainString(“One”) } 在我的主动活动中,我只是打电话 @Inject @Named(“One”) lateinit var stringOne: MainString @Inject @Named(“Two”) lateinit var stringTwo: MainString 然而,当我编译时,它抱怨 Error:(11, 1) error: com.elyeproj.demo_dagger_scope.MainString cannot be provided without an @Inject constructor or from an @Provides- or […]
我来自Java背景,我有一个简单的数组: var statues: MutableList = mutableListOf() statues.add(1) statues.add(3) statues.add(2) var sortedArray: MutableList = mutableListOf() sortedArray = statues.sortedArray() 我如何排序这个简单的数组,并存储在variablessortedArray?
当Kotlin中的某些东西可能为null时,我真的被这种情况困住了。 当一个值不能为空 – 很明显。 但是,如果默认情况下可以为空,该如何处理情况。 看看这个例子: abstract class MapActivity: AppCompatActivity(), OnMapReadyCallback { lateinit var map: GoogleMap fun initializeMap() { val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this) } override fun onMapReady(map: GoogleMap?) { this.map = map //error here } } 所以我应该这样处理这种情况: override fun onMapReady(map: GoogleMap?) { if (map != null) this.map = map } 但是如果map为null呢 。 […]
朋友们! 我是Vertx和Mongo的绿手,现在我面临一个棘手的问题。 以下是代码段。 这里是Mongo客户端的包装类。 // MongoDatabase.kt import io.vertx.core.json.JsonObject import io.vertx.core.logging.LoggerFactory import io.vertx.kotlin.core.json.JsonObject import io.vertx.rxjava.core.Vertx import io.vertx.rxjava.ext.mongo.MongoClient import kotlin.reflect.KClass import kotlin.reflect.full.declaredFunctions class MongoDatabase (val tClass: KClass, vertx: Vertx, config: JsonObject, databaseName: String) : Database { private val mongo = MongoClient.createShared(vertx, config, databaseName) private val logger = LoggerFactory.getLogger(MongoDatabase::class.java) // I use a self-made annotation to record the […]