Tag: Java

尝试与资源:Kotlin中的“使用”扩展功能并不总是工作

我在Kotlin中表达了Java的try-with-resources构造方面遇到了一些麻烦。 在我的理解中,作为AutoClosable实例的每个表达式都应该提供use扩展功能。 这是一个完整的例子: import java.io.BufferedReader; import java.io.FileReader; import org.openrdf.query.TupleQuery; import org.openrdf.query.TupleQueryResult; public class Test { static String foo(String path) throws Throwable { try (BufferedReader r = new BufferedReader(new FileReader(path))) { return ""; } } static String bar(TupleQuery query) throws Throwable { try (TupleQueryResult r = query.evaluate()) { return ""; } } } Java-to-Kotlin转换器创建这个输出: import java.io.BufferedReader […]

在Kotlin中定义log TAG常量的最好方法是什么?

我在我的Android应用程序中创建了我的第一个Kotlin类。 通常为了记录的目的,我有一个名字为TAG的常量。 我会在Java中做什么是: private static final String TAG = MyClass.class.getSimpleName(); 我知道在Kotlin类中我可以用这种方式创建TAG : private val TAG = MyClass::class.java.simpleName 这对于使用Java和Kotlin的项目来说是可以的,但是如果我开始一个仅在Kotlin中的新项目呢? 我怎样才能定义TAG常量? 有没有更多的KOTLIN方式,我没有这个奇怪的建设class.java.simpleName ?

来自Java / Kotlin的XML,跨平台的

我有用XSD指定的XML格式,我想要生成相应的Java(或Kotlin)源代码,包括(反)序列化。 我知道JAXB,但据我所知,它很大程度上依赖于反思。 这对我来说是没有选择的,因为我想要生成的源代码准备好转换成JavaScript(例如GWT或Kotlin / JavaScript)。 正因为如此,这些才是要求: 使用XSD模式生成相应的Java或Kotlin源代码 不要使用反射,而是包含序列化/反序列化方法的普通旧Java类 注入一个XML IO接口(如StaX)与所需的方法(我可以根据目标安装:JVM,JavaScript,Android,…) 你知道这个任务的工具,还是我必须创建我自己的解决方案?

Kotlin为Android和静态最终的内部类

我试图在Kotlin上重写我的Android应用程序,并且在转换ContentProvider契约类时遇到了问题。 所以我有简单的合同类(默认的东西,如内容类型和内容uris被忽略): public final class Contract { public static final class Contacts { public static final String NAME = "Name" public static final String BIRTH = "Birth" public static final String IMAGE = "Image" } } 如果我理解正确,在Kotlin我们没有静态成员。 相反,我们有“伴侣对象”。 所以转换成Kotlin后,我有这样的代码: object BirthdayContract { class Contacts : BaseColumns { companion object { val NAME = "Name" val […]

有没有可能在Kotlin源代码上使用Allatori?

过去我尝试过使用Allatori,不管禁用了多少选项,我都无法将它应用于实际的Kotlin字节码 – 为了让混淆工作,我必须排除Kotlin文件。 在Kotlin字节码上可以使用Allatori混淆吗? 如果是这样,哪些选项需要被禁用?

为什么使用双冒号(::)在Kotlin上课?

我们知道使用双冒号( :: :)来获取Kotlin中的函数(callable)引用,例如String::compareTo , "string"::compareTo 。 在Java中,我们使用SomeClass.class和someInstance.getClass()来获得类。 为什么在Kotlin中,我们使用SomeClass::class和someInstance::class而class不是函数/方法? println(String::compareTo) // output: fun kotlin.String.compareTo(kotlin.String): kotlin.Int println("string".compareTo("strong")) // output: -6 println(String::class) // output: class kotlin.String println("string".class) // compile error

Kotlin Kmongo插入并返回插入的项目

我只是试图在Kotlin上做一个干净的虚拟项目来练习,但是Kotlin和插入方法一样。 我想这将是一些其他的方式来插入和返回项目不是旧的方式来提出2个请求。 fun insert(book: Book) : Book? { getByEan(book.EAN)?.let { return null } mongo.collection.insertOne(book) return getByEan(book.EAN) } 所以在这种情况下,我做了一个预先检查,以不对相同的EAN项目,然后如果成功,然后返回插入的项目。 它可以更简单吗? 也许预先检查与索引或以某种方式取回插入的项目没有新的要求?

如何在Kotlin中实现这个Java接口?

我很困惑(由于Kotlin没有原始): public interface A { Object get(Integer i); Object get(int i); } 我无法更改Java代码,因为它是库中已编译的类文件。

休眠与Kotlin:@ManyToOne(fetch = FetchType.LAZY)

我正在使用Hibernate与Kotlin和我在@ManyToOne关系上的@ManyToOne问题。 考虑以下几点: @ManyToOne(fetch = FetchType.LAZY) open var event: Event? 问题是,当使用FetchType.LAZY时,获取的Event将是Event_$$_jvst_…类上的Event_$$_jvst_… JavaassistLazyInitializer 但事件永远不会被初始化,一切都将是空的或空的。 一旦FetchType.LAZY被删除,一切工作正常。 这在Java中没有发生。 我试图在var上添加open ,以便Event可以正确代理。 没有效果。 所有的@Entity类当然也是open 。 如果open关键字被删除,将不会创建代理,所以没有懒惰。 我的猜测是,Hibernate不能轻易地代理这些默认的kotlin获得者。 有没有办法解决它?

Java通用于Kotlin通用。 从方法返回泛型

尝试将项目从Java转换为Kotlin。 我被困在从RXJava 2返回ObservableTransformer的方法中 Java的 protected <T> ObservableTransformer<T, T> onNetworkError() { return observable -> observable .doOnError(throwable -> networkError.setValue(throwable)); } 转换这个使用intellij ide会引发错误。 Java到Kotlin使用ide protected fun <T> onNetworkError(): ObservableTransformer<T, T> { return { observable -> observable .doOnError({ throwable -> networkError.setValue(throwable) }) } } 有没有人有一个想法将上面的Java代码转换为Kotlin? 提前致谢