我有这些类写在kotlin,位置,其余的是在Application.kt @RealmClass open class Location( @PrimaryKey @SerializedName(“id”) var id: Int = 0, @SerializedName(“city_name”) var city_name: String? = null, @SerializedName(“elevation”) var elevation: Int = 0, @SerializedName(“state_code”) var state_code: String? = null, @SerializedName(“state_name”) var state_name: String? = null, @SerializedName(“country_code”) var country_code: String? = null, @SerializedName(“country_name”) var country_name: String? = null ):RealmObject() 其余的: private fun loadStuff() { val […]
这是一个简单的问题,但我找不到答案。 有没有办法在Kotlin初始化一个lateinit var时被通知? 我知道我可以检查它是否已经被初始化为this::coolvar.isInitialized但这是不一样的。 谢谢
由于Kotlin没有得到检查exception,文档exception预期将被接口方法抛出的正确方法是什么? 我应该在接口中还是在实现类中记录它(只有在具体方法实际抛出它时)?
我需要用Java来装饰一个实例,并且希望委托在Kotlin(更简单)。 问题是,我得到了定义的编译错误。 我如何定义inner能够接收null? open class ConnectionDecorator(var inner: Connection?) : Connection by inner // Getting an error on the right inner 来自Java的示例用法: new ConnectionDecorator(null).close(); *这是一个简单的例子,试图使用Java中的Kotlin委托,其中传递的内容可以为null。
例如,我们有这样的结构: data class Item( val city: String, val name: String ) val structure = mapOf(“items” to listOf( Item(“NY”, “Bill”), Item(“Test”, “Test2”)) ) 我想用Javascript获取这个对象: var structure = { “items”: [ { “city”: “NY”, “name”: “Bill” }, { “city”: “Test”, “name”: “Test2” } ] } 如何我们可以将map从Kotlin转换为dynamictypes的Javascript结构? 我只find这个明确的方法: fun Map.toJs(): dynamic { val result: dynamic = object {} […]
我试图运行一个在Kotlin中编写并使用Gradle构建的Spring Boot应用程序。 当我在IntelliJ中运行应用程序时,我收到以下消息: 应用程序启动失败 描述: com.mycompany.app.rest.api.MyApi中构造函数的参数1需要一个无法find的“com.mycompany.app.domain.UserRepository”types的bean。 行动: 考虑在你的配置中定义一个types为“com.mycompany.app.domain.UserRepository”的bean。 MYAPP: MyAPP目录结构和文件 Myapp.kt package com.mycompany.app.startbootapp import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication import org.springframework.context.annotation.ComponentScan @SpringBootApplication @ComponentScan(basePackages = arrayOf(“com.mycompany.app”)) class MyApp fun main(args: Array) { runApplication(*args) } MyApi.kt package com.mycompany.app.rest.api import com.mycompany.app.domain.User import com.mycompany.app.domain.UserRepository import com.mycompany.app.infra.ParamUtil import com.mycompany.app.rest.api.inout.DtoUser import org.springframework.http.HttpStatus import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RestController import javax.servlet.http.HttpServletRequest import […]
我怎么能有这样的Kotlin的Java代码? 甚至IDE也不会完全将其转换为Kotlin! /** Defines callbacks for service binding, passed to bindService() */ private ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { // We’ve bound to LocalService, cast the IBinder and get LocalService instance LocalBinder binder = (LocalBinder) service; mService = binder.getService(); mBound = true; } @Override public void onServiceDisconnected(ComponentName […]
我正要将一些java代码移植到kotlin。 我刚刚发现了一些尴尬的工厂方法,它看起来非常直接的转变: import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.appender.SyslogAppender; public class Test { public Appender getSyslogAppender(String id, String host, int port, boolean immediateFlush, boolean newLine) { return SyslogAppender.newSyslogAppenderBuilder() .setId(id) .setNewLine(newLine) .withHost(host) .withPort(port) .withImmediateFlush(immediateFlush) .build(); } } 所以我的第一个尝试是: fun getSyslogAppender(id: String, host: String, port: Int, immediateFlush: Boolean, newLine: Boolean): Appender { return SyslogAppender.newSyslogAppenderBuilder() .setId(id) .setNewLine(newLine) .withHost(host) .withPort(port) .withImmediateFlush(immediateFlush) .build() […]
我有一个默认实现的Kotlin接口,例如: interface Foo { fun bar(): String { return “baz” } } 这将是好的,直到我试图从Java实现这个接口。 当我这样做时,它说这个类需要被标记为抽象或实现方法bar() 。 另外,当我尝试实现该方法时,我无法调用super.bar() 。
我写了一个Kotlin扩展,为枚举值添加next() 。 但有没有更好的方法来做到这一点? fun <T : Enum> T.next(): T { val values = this::class.java.getEnumConstants() return if (this.ordinal < values.size – 1) values[this.ordinal + 1] else values[0] } enum class Color {Red, Yellow, Green} Color.Red.next() //Yellow 我可以做到没有reflection? 如果没有,如何用科特林思考做到这一点? 该想法是从枚举值迭代到下一个。 但是只有一个特定的值,而不是整个枚举values()列表。 我想要防止的事情是将以下添加到每个枚举types: fun next() = if (this.ordinal == Color.values().size – 1) Color.values()[0] else Color.values()[this.ordinal + 1]