我正在用SpringBoot和JPA尝试Kotlin。 我试图坚持一个LocalDate但有一个错误。 以下是我的实体的cody: @Entity @Table(name = “season”) data class Season(val name: String, @Convert(converter = LocalDateAttributeConverter::class) val from: LocalDate, @Convert(converter = LocalDateAttributeConverter::class) val to: LocalDate, @Enumerated(EnumType.STRING) val status: Status, @Id @GeneratedValue val id: Int = -1) enum class Status { CURRENT, CLOSED } 转换器: @Converter(autoApply = true) class LocalDateAttributeConverter : AttributeConverter { override fun convertToDatabaseColumn(locDate: LocalDate?): […]
我的gradle构建: buildscript { ext.kotlin_version = ‘1.1.4-3’ repositories { mavenCentral() } dependencies { classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” } } apply plugin: ‘java’ apply plugin: ‘kotlin’ apply plugin: “kotlin-kapt” sourceCompatibility = 1.8 repositories { mavenCentral() } kapt { processors = “libs.orm.codeGenerators.ModelProcessor” //PROCESSOR } dependencies { compile “org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version” compile “com.google.auto.service:auto-service:1.0-rc3” } 处理器不在单独的模块中。 处理器什么也不做,在#process它只是抛出,看它是否工作。 @AutoService(Processor::class) @SupportedSourceVersion(SourceVersion.RELEASE_8) class ModelProcessor : AbstractProcessor() { […]
至于我的理解,在Kotlin中委托一个实现的想法是避免看起来像这样的代码: class MyClass(val delegate : MyInterface) : MyInterface { override fun myAbstractFun1() = delegate.myAbstractFun1() override fun myAbstractFun2() = delegate.myAbstractFun2() // … } 相反,我们可以写下面的代码,它应该这样做: class MyClass(val delegate : MyInterface) : MyInterface by delegate 现在,我想delegate是一个可变的variables,即我的代码如下所示: var delegate : MyInterface = MyImplementation() object MyObject : MyInterface by delegate 所以,如果我像第一个例子一样委托每个抽象方法来delegate自己的delegate那么改变delegate的值确实会改变方法的行为。 但是,上面的代码编译为这个Java代码: public final class MyObject implements MyInterface { public […]
试图运行Kotlin协同程序的一些例子,但不能建立我的项目。 我正在使用最新的Gradle版本 – 4.1 任何建议什么检查/修复? 这里是build.gradle buildscript { ext.kotlin_version = ‘1.1.4-3’ repositories { mavenCentral() } dependencies { classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” } } apply plugin: ‘kotlin’ apply plugin: ‘application’ kotlin { repositories { jcenter() } experimental { coroutines ‘enable’ } dependencies { compile “org.jetbrains.kotlinx:kotlinx-coroutines-core:0.18” } } 和main.kt fun main(args: Array) { launch (CommonPool) { delay(1000L) println(“World!”) } […]
我有一个类,有一个可写的多个线程,类似的variables class A { var s: String? = null //var accessed by multiple threads fun doStuff() { if (s != null) { //not safe } } } 为了解决这个问题,我通常会像这样做一个不可变的副本 class A { var s: String? = null //var accessed by multiple threads fun doStuff() { val sCopy = s if (sCopy != null) { //safe now […]
我想链接我的应用程序中的按钮与网站,因为当用户点击这个按钮的网站在浏览器中打开或应用程序,,我使用kotlin不是java ,,我怎么能做到这一点? :)我尝试使用这个代码: bu1.setOnClickListener({ var gourl= Intent(this,Uri.parse(“https://www.facebook.com/”)) startActivity(gourl) }) bu1.setOnClickListener({ var gourl= Intent(this,Uri.parse(“https://www.facebook.com/”)) startActivity(gourl) }) bu1.setOnClickListener({ var gourl= Intent(this,Uri.parse(“https://www.facebook.com/”)) startActivity(gourl) })
我正在使用这个库的一些代码: https : //github.com/Netflix-Skunkworks/rewrite 当我调用它的一个方法时,我遇到一个IDE错误: 所提供的参数都不能调用以下函数。 目标方法有两个相似的签名: data class CompilationUnit(…){ fun refactor() = Refactor(this) fun refactor(ops: Refactor.() -> Unit): Refactor { val r = refactor() ops(r) return r } fun refactor(ops: Consumer): Refactor { val r = refactor() ops.accept(r) return r } } Kotlin的调用代码: val unit: CompilationUnit =… unit.refactor{ tx -> doSomeThing() } 在Java中,这个lambda调用是可以的: CompilationUnit […]
下面的代码工作,但我觉得有可能是一个更有效/更清洁的方式。 我是Kotlin和Android开发的新手,所以请放轻松点。 ;-)任何增强将非常赞赏,因为我一直在寻求改善。 fun updateBackgroundColor() { val sharedPref = PreferenceManager.getDefaultSharedPreferences(this) // Gets the text color from the shared preferences file val backgroundColor = sharedPref.getString(“background_color”, “”) val fullscreenView = findViewById(R.id.fullscreen_content) val fullView = fullscreenView as TextView? // Changes the text color based on the color the user has selected in Settings/Preferences if (backgroundColor == “blue”) { […]
特性代表在文档中描述,并没有问题。 但是class级代表团呢? class FrameWorkClass // Third party class we cannot modify class MyDerivedFrameWorkClass(c:FrameWorkClass) : FrameWorkClass by c 在不修改FrameWorkClass的情况下实现这一点的最好方法是什么? 显然我们无法实现我们的界面。
我有以下代码,并与意图得到一个错误。 正因为this我相当肯定。 listView.onItemClickListener = object : OnItemClickListener { override fun onItemClick(parent: AdapterView, view: View, position: Int, id: Long) { val intent = Intent(this, MyActivity::class.java) startActivity(intent) } }