Tag: Java

如何在Kotlin中创建一个匿名接口的实例?

我有一个第三方的Java库,它的接口是这样的: public interface Handler { void call(C context) throws Exception; } 我如何在Kotlin中简洁地实现它类似于这样的Java匿名类: Handler handler = new Handler { @Override public void call(MyContext context) throws Exception { System.out.println(“Hello world”); } } handler.call(myContext) // Prints “Hello world”

使用Moshi反序列化可以是两种数据types之一的字段

我从OrientDB服务器收到一些JSON,如下所示: { … “out”: …, “in”: …, … } 现在这两个字段可以是两种types之一: String和我自己的自定义对象(我们称之为一个Record )。 例如,对于一个请求我可能会收到: { … “out”: “#17:0”, “in”: { … }, … } 对于另一个我可能会得到: { … “out”: { … }, “in”: “#18:2”, … } 等等。 两者都可能是String ,都可能是Records ,一个可能是一个String ,另一个可能是一个Record ,等等。 现在,当我使用Moshi对这种JSON进行反序列化时,我有两个参数out和in来保存它们各自键的值; 然而,因为这些值不是固定的数据types,所以说起来容易做起来难。 创建多个POJO(或“POKO”,我猜是因为我正在使用Kotlin)不起作用,因为这些对象可以在其他 JSON对象内部find。 我需要一个单一的对象,这些参数可以采取一个可变的数据types。 那么我该怎么做呢? 我需要在Moshi中编写一个自定义适配器来序列化/反序列化这些值吗? 如果是这样,我将如何去写一个可以分配一个特定的数据types取决于参数的值? 或者是有某种types的Kotlin类/函数/扩展函数,我可以find/写入,可以容纳两种可能的数据types? 如果它是相关的,我也使用Retrofit 2 + RxJava 2异步地进行HTTP调用,所以如果这些库中有任何数据types或函数有助于这样的事情,那么我就是耳熟能详。 即使任何人只能用Java来回答,因为我可以自己转换代码。 […]

我怎样才能写一个可用于多种语言的图书馆?

我正在尝试编写一个可以从多种编程语言中使用的库,例如: CLR语言(C#,F#..) JVM语言(Java,Kotlin,Scala ..) 母语(C / C ++,Rust,Objective-C,Swift ..) 的JavaScript /打字稿 我所知道的基本方法是用C / C ++编写它,并为每种语言维护我自己的绑定,或为每种语言维护单独的库副本(如Reactive extensions does)。 无论哪种方式,这是O(n) n语言的工作。 是否有一种语言或工具可用于使用一种语言编写库,并为其他语言自动生成绑定?

使用netbeans8.2编译Errore java项目

我尝试在我的电脑上用netbeans 8.2编写一个项目。 当我复制它,并在另一台计算机中导入此项目,并尝试与NetBeans 8.2编译它我看到这个错误。请尽可能帮助我:这是一个错误: “Could not load definitions from resource org/jetbrains/kotlin/ant/antlib.xml. It could not be found. ant -f C:\\Users\\QUQNTOM\\Documents\\NetBeansProjects\\C hangefile -Dnb.internal.action.name=run run init: Deleting: C:\Users\QUQNTOM\Documents\NetBeansProjects\Change file\build\built-jar.properties deps-jar: Could not load definitions from resource org/jetbrains/kotlin/ant/antlib.xml. It could not be found. Updating property file: C:\Users\QUQNTOM\Documents\NetBeansProjects\Change file\build\built-jar.properties”

getActionView已被弃用?

今天我决定把我的Android应用从Java转换到Kotlin! :)但是当我输入这个时,我感到非常惊讶: val searchItem = menu.findItem(R.id.action_search) val searchView = MenuItemCompat.getActionView(searchItem) as SearchView 而Android Studio告诉我:“’getActionView(MenuItem!):View!’ 已弃用。在Java中已弃用“ 所以之前要问你我解决方案是什么解决方案,我相信我find解决方案:“直接使用getActionView()”。 所以我修改我的代码是这样的: val searchView = MenuItemCompat.getActionView() as SearchView 但getActionView()仍然交叉,所以我不明白… 我会很高兴,如果你能帮我:)谢谢!

如何定义一个调用枚举实例的xml配置spring bean?

我有一个枚举(这是kotlin,但没关系,也可能是Java) enum class AnEnum { A_VALUE { override fun aMethod(arg: ArgClass): AClass { //… } }; abstract fun aMethod(arg: ArgClass): AClass } 我需要一个Spring xml bean中的bean,它是调用枚举值的“aMethod”的结果。 看来我不能以通常的方式使用“工厂方法” 我知道如何获得枚举值的bean,如果这有助于打破这个问题: A_VALUE 我不知道如何创建一个types为“AClass”的bean,这是在enum实例上调用带有参数的方法的结果。 我不是很熟悉spring,而且在bean定义之前,我使用了构造函数或静态方法。

使用Gradle构建Kotlin项目有时会导致NoClassDefFoundError失败

我不能可靠地重现这个问题,因为它是零星的。 这是我用Gradle创建Kotlin项目时所得到的结果: Could not perform incremental compilation: Could not connect to Kotlin compile daemon Could not connect to kotlin daemon. Using fallback strategy. :myproj:compileKotlin FAILED 1 actionable task: 1 executed e: java.lang.NoClassDefFoundError: Could not initialize class kotlin.Unit warning: the ‘-d’ option with a directory destination is ignored because ‘-Xbuild-file’ is specified Exception in thread “Thread-25” […]

如何与Kapt3一起使用lombok

当我尝试使用Kapt3运行Java和Kotlin android应用程序时: apply plugin: ‘kotlin-kapt’ javac编译失败,无数 error: cannot find symbol 为生成的方法。 这可能是由于kapt无法生成存根导致的: ‘kapt.generateStubs’ is not used by the ‘kotlin-kapt’ plugin 所有前面提到的强迫我使用旧的kapt我可以使用: compileOnly “org.projectlombok:lombok:$lombokVer” annotationProcessor “org.projectlombok:lombok:$lombokVer” kapt “org.projectlombok:lombok:$lombokVer” kapt { generateStubs = true } 然而这在测试编译期间导致失败,因为我也使用数据绑定库: 出了什么问题:执行任务失败:app:compileXDebugUnitTestJavaWithJavac’。 java.lang.RuntimeException:无法解析数据绑定编译器选项。 参数:kapt.annotations:… \ app \ build \ tmp \ kapt \ xDebugUnitTest \ wrappers \ annotations.bscplayDebugUnitTest.txt kapt.kotlin.generated:… \ app \ […]

Xpath解析:元素的前缀没有绑定

我知道这个问题已经被问了很多次,但是即使在阅读之后,我也无法解决这个问题。 问:我有一个XML,其中有一个节点(GivenName)用一个名称空间(mpeg7)定义并在根元素顶部声明。 我想用xpathexpression式(// EpisodeOf / @ crid)使用javax xpath解析一个属性。 只是为了清除代码工程,当我从XML中删除这个GivenName节点。 XML: Azeb 代码(在Kotlin): val xpath = XPathFactory.newInstance().newXPath() xpath.namespaceContext = MyNamespaceContext() val extractedValue = xpath.evaluate(“”,InputSource(StringReader(AboveXMLInStringVariable)), qName)} class MyNamespaceContext : NamespaceContext { override fun getNamespaceURI(prefix: String?): String { println(“checking for getnamespace”) if (prefix == null) { throw IllegalArgumentException(“No prefix provided!”); } else if (prefix.equals(“mpeg7”)) { return “http://developer.tmsapi.com/files/tva_mpeg7_2008.xsd”; } […]

如何安排频繁的后台工作,支持牛轧糖以上的支持?

我正在做一个应用程序,需要经常查询服务器的更新。 我尝试了jobScheduler,但是由于牛轧糖,他们的频率限制在15分钟或更多的时间间隔。 此外,根据这个网站https://medium.com/til-kotlin/jobintentservice-for-background-processing-on-android-o-39535460e060 ,奥立奥现在杀了几分钟后长时间运行的后台进程。 我发现唯一可行的解​​决方案就是使用firebase,但是对于100多个用户来说,它的成本是25美元/月,而且我认为可以在没有播放服务的情况下删除任何设备。 有任何想法吗?