如何检查两个对象在Kotlin中是否具有相同的类?

在Kotlin中,你可以使用is来检查一个对象是否是一个类的一个实例(包括inheritance) myObject is String 但是,如果两个对象是完全相同的类,你怎么检查? 我正在寻找一个Python的模拟 type(obj1) is type(obj2)

IntelliJ不能识别kotlin文件,删除后重新创建相同的名称

我目前有一个与IntelliJ问题。 我在我的项目中使用Kotlin。 我删除了一个文件(比方说test.kt),现在我想创建一个同名的新文件。 IntelliJ不识别kotlin语法并将其显示为文本文件。 当我删除我没有选中“安全删除”和“搜索评论和字符串” 任何人都可以帮助我在这件事? 编辑:我试图删除.idea和.iml文件,重新启动intelliJ。 它不会改变任何东西。

Kotlin中的通用lambda或函数值types

给定一个函数 fun to5(x: T): Int = 5 有没有可能像这样将其赋值给variables(值) funVal ? val funVal: (T) -> Int = ::to5 无 未解决的参考:T 错误? 换句话说,有可能以某种方式告诉Kotlin funValtypes声明中的T是一个types参数? 比如像这样: val funVal: (T) -> Int = ::to5 val funVal: (T) -> Int = ::to5 val funVal: (T) -> Int = ::to5 val funVal: ((T) -> Int) = ::to5 用例 我的用例是使用generics的咖喱。 概念: fun […]

Android / Kotlin使用Java.io.File读取文件:路径有问题

我正在尝试使用Kotlin在Android上开发我的第一个应用程序。 目前我尝试读取位于我的Android项目中的文件。 我有我的“Java”文件夹下面的架构: /java/example.first.com.monapp/controller/FirstActivity.kt /java/example.first.com.monapp/controller/WelcomeActivity.kt /java/example.first.com.monapp/model/words.kt /java/example.first.com.monapp/model/wordsData wordsData是一个带有原始数据的文本文件(每行3个词,用“;”分隔) word.kt中的代码是: package example.first.com.monapp.model import java.io.File data class Word(val wordFr:String, val wordRu:String, val active:Boolean) fun readFileKotlin(): List { val fileToRead=”wordsData” val wordList = mutableListOf() var reader= File(fileToRead).readLines() var wrdLst:List for (line in reader) { val wrdProperties = line.split(“;”) wordList.add(Word(wrdProperties[0], wrdProperties[1], wrdProperties[2].toBoolean())) } wrdLst=wordList return wrdLst } 我创建我的活动期间调用readFileKotlin函数,但我不断得到“java.io.FileNotFoundException”没有这样的文件或目录错误。 我尝试了几个变体的路径,如 […]

从Kotlin Anko的两个表中选择数据

在我的数据库中有两个表格, 1)任务:(id(INTEGER + PRIMARY_KEY),标题,描述,时间戳,category_id(Category – > id的外键)) 2)类别:(id(INTEGER + PRIMARY_KEY),名称) 从表中选择数据Anko提供的方法如下: var mDatabase: DatabaseManager = DatabaseManager.getInstance(activity) var mResult: List = ArrayList() mDatabase.use { mResult = select(TABLE_TASK).parseList(classParser()) } 我想要的是显示任务列表的类别名称我已经检查了所有的教程和堆栈链接,但没有得到任何方式来实现这一点。 有什么方法可以从Kotlin Anko的两个表中选择数据? 感谢提前!

Kotlin内联扩展属性

我知道内联关键字的意思是避免调用开销调用一个函数。 但我不明白什么内联扩展属性工作? 假设我们有两个名为foo的扩展属性,另一个是内联的命名条 val Any.foo : Long get() = Date().time inline val Any.bar : Long get() = Date().time 执行它们中的任何一个,我们find期望的输出,即当前时间。 这个文件的字节码如下: public final class InlinedExtensionPropertyKt { public final static getFoo(Ljava/lang/Object;)J @Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0 L0 ALOAD 0 LDC “$receiver” INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkParameterIsNotNull (Ljava/lang/Object;Ljava/lang/String;)V L1 LINENUMBER 9 L1 NEW java/util/Date DUP INVOKESPECIAL java/util/Date. ()V INVOKEVIRTUAL java/util/Date.getTime ()J […]

Dagger 2 + Kotlin无法将Presenter插入到View中

我正在尝试使用Dagger 2创建简单的MVP构建应用程序。我正在试图获得与本教程中相同的结果,但使用Kotlin。 这是我的代码到目前为止。 主持人: class MainPresenter @Inject constructor(var view: IMainView): IMainPresenter{ override fun beginMessuring() { view.toastMessage(“Measuring started”) } override fun stopMessuring() { view.toastMessage(“Measuring stopped”) } } 视图: class MainActivity : AppCompatActivity(), IMainView { @Inject lateinit var presenter : MainPresenter val component: IMainComponent by lazy { DaggerIMainComponent .builder() .mainPresenterModule(MainPresenterModule(this)) .build() } override fun onCreate(savedInstanceState: Bundle?) { […]

是否有任何相当于Java 8 Stream限制function的Kotlin函数?

我试图find符合条件(过滤)的列表中的前两个元素,为此,我已经在kotlin中实现了以下代码片段: val arr = 0 until 20 val res = arr.filter { i -> println(“Filter: $i”) i % 2 == 0 }.take(2) 一切都很好,直到我意识到它通过整个清单过滤,无论是否find了这两个元素。 利用Java 8流API,它按预期工作。 val res2 = arr.toList().stream() .filter { i -> println(“Filter: $i”) i % 2 == 0 }.limit(2) 所以我的问题是,如果只能使用Kotlin函数来实现。 我知道我可以使用一个简单的循环,但我想使用一个函数式编程aproach。

如何使用Gradle和Kotlin创建单独的测试?

我正在使用包含unit testing的Gradle开发Kotlin项目。 我想添加一些集成测试(或function测试,从来没有理解两者之间的差异),但我希望能够独立运行它们。 理想情况下,测试的来源在不同的文件夹中。 我正在使用Gradle 4.5,我的build.gradle文件看起来像这样: buildscript { ext.kotlin_version = ‘1.2.21’ repositories { mavenCentral() } dependencies { classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” } } apply plugin: ‘kotlin’ apply plugin: ‘application’ mainClassName = ‘xyz.bobdudan.myproject.AppKt’ repositories { maven { url “http://maven.stardog.com” } mavenCentral() } dependencies { compile “org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version” testCompile ‘io.kotlintest:kotlintest:2.0.7’ } 我已经尝试了这里描述的方法为java,但它不起作用:任务也运行unit testing,但他们不能被发现,集成测试根本不执行。 我能做什么 ? 编辑: 下面是使用@ lance-java解决方案的gradle clean integTest的结果: […]

如何在Kotlin中用动态编程实现一个纯函数?

我一直在试图将我的一些代码转换为纯函数,以便学习如何以function的方式使用Kotlin,通过这个简单的代码片段,我想不出任何方法来使我的calculateFibonacci函数成为一个纯函数。 我意识到一个潜在的递归解决方案,但是对于潜在的堆栈溢出呢,Kotlin是否实现了Tail Call Optimization? 例: val fibonacciValues = hashMapOf(0 to BigInteger.ONE, 1 to BigInteger.ONE); // * TODO investigate how to do dynamic programming with a pure function ** // private fun calculateFibonacci(n: Int): BigInteger? { if (fibonacciValues.contains(n)) { return fibonacciValues.get(n) } else { val f = calculateFibonacci(n – 2)!!.add(calculateFibonacci(n – 1)) fibonacciValues.put(n, f) return f […]