Tag: kotlin interop

用Kotlin JS的fun <T> parse(text:String)解析JSON:T`?

我如何使用 fun <T> parse(text: String): T 在Kotlin JS解析JSON? 例如,我怎样才能解析这个JSON字符串? { "couchdb": "Welcome", "version": "2.0.0", "vendor": { "name": "The Apache Software Foundation" } }

用Java的类委托调用Kotlin对象作为静态方法

这可能有点难以描述,所以我会试着举一个我想要做的具体事例。 假设我们有一个Facade接口和类(在java中),像这样: interface FacadeInterface<T> { void method(String from, String via); } class Facade<T> implements FacadeInterface<T> { private Class<T> mClazz; public Facade(Class<T> clazz) { mClazz = clazz; } @Override public void method(String from, String via) { System.out.println("Method called from " + from + " via " + via); } } 在我的应用程序中,我需要拥有多个单例,它们包含外观的一个实例。 真正的门面有额外的设置/配置参数,但这些在这里是不相关的。 在我开始使用kotlin之前,我将有一个类,它持有一个门面的静态实例(不是一个单例,但在我的情况下,它也有类似的用途),它将代码调用到门面上,如下所示: public class Singleton […]

如何在kotlin编程语言中使用如下所述的循环?

我怎样才能让它在kotlin使用for循环? for (double i = 0; i < 10.0; i += 0.25) { System.out.println("value is:" + i); }

为什么在Java中实现一个返回Unit的Kotlin函数时,必须返回Unit.INSTANCE?

如果我有Kotlin功能 fun f(cb: (Int) -> Unit) 我想从Java调用f ,我必须这样做: f(i -> { dosomething(); return Unit.INSTANCE; }); 这看起来很丑陋。 为什么我不能像f(i -> dosomething());那样写它f(i -> dosomething()); ,因为Kotlin中的Unit相当于Java中的void ?

在Kotlin Javascript中传递参数时,'x'不是函数

我不断收到此错误: TypeError:Scraper.dumpTitle不是一个函数 而我无法弄清楚为什么… 的index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Kotlin JS Demo</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body> <script src="out/production/lib/kotlin.js"></script> <script src="out/production/Scraper.js"></script> <!–<script>–> <!–function loaded() {–> <!–}–> <!–</script>–> <script> $(function() { Scraper.dumpTitle(document) }) </script> </body> </html> Main.js import kotlin.browser.document /** * * * * – */ fun main(args: Array<String>) { println("Hello") } fun dumpTitle(doc: dynamic) […]

私人获得者和Kotlin财产的公共二传手

如何在Kotlin拥有一个私人的吸气(或没有它),但有一个公共二传手? var status private get 不起作用的错误: Getter visibility must be the same as property visibility 在我的情况下,原因是Java互操作:我希望我的Java代码能够调用setStatus而不是getStatus 。

是否有可能使用Kotlin构建完整的Node.js Web应用程序?

如果我理解正确,随着Kotlin 1.1的发布 ,我们可以将JavaScript设置为 Kotlin项目的JavaScript 编译目标 。 是否有可能(或可行)使用Kotlin代码编写完整的Node.js应用程序,如快速网络服务器? 如这个问题所示,我们可以将Node模块导入到Kotlin类中: external fun require(module: String): dynamic val express = require('express') …这似乎可以创建一个应用程序使用: val app = express() 这是Kotlin建立快速应用程序的方式吗? 或者,我应该按照文档中的说明申报一个班级: @JsModule("express") external class Express { … } 为Node.js应用程序开发建立一个Kotlin项目的规范方法是什么? Kotlin的JavaScript互操作性足够强大,能够继续走下去吗,还是会比它的价值更麻烦呢?

Kotlin SAM私有内部Java接口转换?

考虑下面的Java类: package javapkg; public class JavaClass { private interface JavaInterface { void foo(); } public void bar(JavaInterface ji) { ji.foo(); } } Kotlin代码使用此类的内部接口与SAM转换(请注意, KotlinClass位于不同的包中): package kotlinpkg import javapkg.JavaClass class KotlinClass { fun f() { val jc = JavaClass() // Does not compile: // "Cannot access 'JavaInterface': it is private in 'JavaClass'" jc.bar(object : JavaClass.JavaInterface{ override […]

在Kotlin中使用功能类型的功能接口

从Kotlin调用Java代码时,有SAM转换,以便Java代码如下所示: adapter.setOnClickListener(new OnClickListener() { @Override public void onClick(View view, int position) { // Do stuff here } }); 可以看起来像这样: adapter.setOnClickListener { view, position -> // Do stuff } 现在,我正在做一个Kotlin项目,我想将一个函数接口定义为一个事件监听器: interface OnSomeActionListener { fun onSomeAction(parameter1: Int, parameter2: String) } 在SomeClass我有一个函数来设置监听器: … private var onSomeActionListener: OnSomeActionListener? = null fun setOnSomeActionListener(listener: OnSomeActionListener) { onSomeActionListener = listener } … […]

Kotlin:不能使用GenericTypeIndicator调用Firebase数据库的getValue

当使用Kotlin处理Firebase数据库时,如果我使用GenericTypeIndicator ,我似乎无法检索List<String>类型的值,如下所示: snap.getValue(object : GenericTypeIndicator<List<String>>() {}) 它从Firebase SDK中产生一个例外如下: com.google.firebase.database.DatabaseException: Generic wildcard types are not supported at com.google.android.gms.internal.zzbtg.zza(Unknown Source) at com.google.android.gms.internal.zzbtg.zza(Unknown Source) at com.google.android.gms.internal.zzbtg.zza(Unknown Source) at com.google.android.gms.internal.zzbtg.zza(Unknown Source) at com.google.firebase.database.DataSnapshot.getValue(Unknown Source) 但是,如果我从Java调用它,如下所示: snap.getValue(new GenericTypeIndicator<List<String>>() {}) 我猜测它与类型通用有关,所以我这样做了: inline fun <reified T> genericType() = object: GenericTypeIndicator<T>() {} val stringListIndicator = genericType<List<String>>() snap.getValue(stringListIndicator) 但同样的例外发生。 为什么这样? 编辑:我试图使用jadx-0.6.1反编译Java和Kotlin版本。 Java源码: public class […]