Tag: Java

Kotlin:接口…没有构造函数

我正在将一些Java代码转换为Kotlin,我不太了解如何实例化Kotlin代码中定义的接口。 作为一个例子,我有一个接口(在Java代码中定义): public interface MyInterface { void onLocationMeasured(Location location); } 然后再在我的Kotlin代码中实例化这个接口: val myObj = new MyInterface { Log.d("…", "…") } 它工作正常。 但是,当我将MyInterface转换为Kotlin时: interface MyInterface { fun onLocationMeasured(location: Location) } 我得到一个错误消息:当我尝试实例化Interface MyListener does not have constructors – 虽然在我看来除了语法之外没有任何变化。 我误解Kotlin中的接口是如何工作的吗?

从Java访问Kotlin扩展函数

有没有可能从Java代码访问扩展函数? 我在Kotlin文件中定义了扩展功能。 package com.test.extensions import com.test.model.MyModel /** * */ public fun MyModel.bar(): Int { return this.name.length() } MyModel是一个(生成的)java类。 现在,我想在我的正常的java代码中访问它: MyModel model = new MyModel(); model.bar(); 但是,这是行不通的。 IDE将无法识别bar()方法,编译失败。 kotlin的静态函数使用了什么工作: public fun bar(): Int { return 2*2 } 通过使用import com.test.extensions.ExtensionsPackage所以我的IDE似乎配置正确。 我搜索了kotlin文档中的整个Java-interop文件,也搜索了很多,但是我找不到它。 我究竟做错了什么? 这甚至有可能吗?

ArrayAdapter.clear kotlin

我正在努力学习kotlin,我想将我的一个Android项目从java转换为kotlin。 但是我有一个问题 override fun onResponse(call: Call<List<CitySearch>>?, response: Response<List<CitySearch>>?) { if(response != null && response.isSuccessful) { val list = response.body() cityAdapter.clear() if(list != null && !list.isEmpty()){ cityAdapter.addAll(list) listView.visibility = View.VISIBLE recyclerView.visibility = View.GONE cityName.visibility = View.GONE } } } 我得到的错误操作不支持只读集合在与cityAdapter.clear()行kotlin.collections.EmptyList.clear()我不知道如何解决它。 对于所有的项目,请检查 WeatherFragment有问题的历史版本 当前版本

从Java迁移到Kotlin

我有一个用Java编写的Android应用程序,但是我想把它转换成Kotlin。 我添加了Kotlin插件并配置了我的应用程序的gradle。 buildscript { ext.kotlin_version = '1.1.4-3' dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' sourceSets { main.java.srcDirs += 'src/main/kotlin' } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } 我正在转换单个文件从Java到Kotlin使用 – 代码 – >转换Java文件到KOTLIN 转换后,我得到这个错误: Process: com.stockal.app, PID: 10633 java.lang.NoSuchMethodError: No static method zzb(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; in class Lcom/google/android/gms/common/internal/zzac; or its super classes (declaration of 'com.google.android.gms.common.internal.zzac' […]

什么是Kotlin后台?

作为Java开发人员,后台字段的概念对我来说有点陌生。 鉴于: class Sample { var counter = 0 // the initializer value is written directly to the backing field set(value) { if (value >= 0) field = value } } 这个后盾有什么好处? Kotlin的文档说: Kotlin中的类不能有字段。 但是,使用自定义访问器时有时需要有后台字段 。 为什么? 在setter中使用属性名称本身的区别是什么,例如。 class Sample { var counter = 0 set(value) { if (value >= 0) this.counter = value // […]

Kotlin:Java无法解析Kotlin Symbol?

我有一个如下所示的Kotlin代码, SingleKotlin.instance可以被其他Kotlin文件调用 class SingleKotlin private constructor(){ companion object { val instance by lazy { SingleKotlin() } } } 但是,当我尝试从java调用SingleKotlin.instance时,它显示无法解析符号“实例” 我不明白为什么,有人可以解释,我怎么解决这个问题?

Kotlin:未解决的参考:javaClass

我希望有人遇到了我在构建我的java / Kotlin项目时遇到的问题。 该项目与java和kotlin互操作,具有以下版本: Jdk 1.7 Kotlin 0.9.66 Gradle(包装)2.0 Kotlin已经编译好之前,我做了一些改变,即转换几个Java类到相当于kotlin版本。 这里是我看到的错误: c:\projects\myproject>gradlew :java:workspace:models:compileKotlin –stacktrace :java:workspace:models:compileKotlin w: Annotations path entry points to a non-existent location: C:\projects\myproject\java\workspace\models\annotations e: C:\projects\CustomerProfileEmail.kt: (15, 32): Unresolved reference: toLowerCase e: C:\projects\CustomerProfilePhone.kt: (34, 22): Unresolved reference: equalsIgnoreCase e: C:\projects\Account.kt: (17, 21): Unresolved reference: javaClass e: C:\projects\Account.kt: (18, 21): Unresolved reference: javaClass e: C:\projects\Account.kt: […]

Android Studio 3.0 Canary 1:引用Kotlin类的Kotlin测试或Java测试失败

UPDATE 这个问题已经提交到这里: https : //youtrack.jetbrains.com/issue/KT-17951 更新2 这个bug已经在Android Studio 3.0 Canary 3中修复了 原始帖子 我刚刚开始玩Android Studio 3.0,我从一开始就启用了kotlin支持。 我在我的项目中写了一个非常简单的Kotlin类: data class Wallet(val coins: Int) { fun add(value: Int): Wallet = Wallet(coins + value) fun substract(value: Int): Wallet = if (coins > value) Wallet(coins + value) else throw InsufficientFundsException() } 现在我想测试这个类,首先我在Kotlin上写了一个本地运行的unittest(测试目录): class WalletTestKotlin { @Throws(Exception::class) @Test fun add() { […]

在Kotlin中的Lambda表达式

考虑下面的Java类: public class SomeClass { public interface Something { void doSomething(); } public void call(Something something) {} } 在Kotlin中,我可以使用lambda表达式,如下所示: SomeClass().call { // do something } 但是如果我在Kotlin中定义下面的方法(使用相同的接口): fun call(something: Something) {} 然后这个电话: call { // do something } 会产生一个类型不匹配的错误。 为什么?

在SBT / Play框架上运行Kotlin代码?

我是PlayFramework的粉丝,但是我对SBT / Scala的经验有限。 我一直在努力使用Kotlin,所以我试图让Kotlin在SBT / PlayFramework上运行。 我使用了Gradle Build系统的Kotlin,但是这需要我应用Kotlin Gradle插件。 不知道如何做SBT的等价物。 这里是你的Play基本build.sbt。 我将如何去添加Kotlin? name := """KotlinTestServer""" version := "1.0-SNAPSHOT" lazy val root = (project in file(".")).enablePlugins(PlayJava) scalaVersion := "2.11.1" libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, javaWs ) 我必须添加"org.jetbrains.kotlin" % "kotlin-stdlib" % "0.10.195"作为库依赖项,但还有什么?