Tag: Java

如何在kotlin中替换:: new?

在Java中的Disruptor教程之后,他们进行以下调用 Disruptor<LongEvent> disruptor = new Disruptor<>(LongEvent::new, bufferSize, executor); 其中LongEvent使用没有参数的默认构造函数实例化 – 即。 new LongEvent() 。 Kotlin的等价线在::new处抛出一个错误。 Kotlin中的::new什么正确的语法? # THIS IS INVALID val disruptor = Disruptor<LongEvent>(LongEvent::new, bufferSize, executor)

在Kotlin 1.1.0编译中无法解析符号@ReadOnly和@Mutable

在使用Kotlin 1.1.0进行编译时出现错误“无法解析符号ReadOnly”和“Can not resolve symbole Mutable”。 Kotlin 1.1.0不支持@ReadOnly和@Mutable吗? 以下是一个示例代码。 SampleList.java Kotlin 1.0.7 import org.jetbrains.annotations.Mutable; import org.jetbrains.annotations.ReadOnly; import java.util.ArrayList; import java.util.List; public class SampleList { @ReadOnly // Can resolve symbol 'ReadOnly' public static List<Integer> getReadOnlyList() { return new ArrayList<>(); } @Mutable // Can resolve symbol 'Mutable' public static List<Integer> getMutableList() { return new ArrayList<>(); } } […]

如何在Kotlin中创建一个也是Java中不可变列表的不可变列表?

我有一个Java / Kotlin互操作问题。 一个Kotlin不可变列表被编译成一个可变的正常的java.util.ArrayList! Kotlin(图书馆): class A { val items: List<Item> = ArrayList() } Java(消费者): A a = new A(); a.getItems().add(new Item()); // Compiles and runs but I wish to fail or throw 如何使我的Kotlin类从Java的角度来看完全不可变?

Kotlin – 与SomeClass.class对象的等价性?

我试图静态获取对象的名称(对于日志记录使用) 等同于: public class SomeClass { private static final String TAG = SomeClass.class.getSimpleName() } 在Kotlin: object SomeObject { private const val TAG = ? }

迟到,懒惰和单身模式在kotlin

我试图将我的项目的一部分从java转换到kotlin 。 其中之一是单身经理班。 java类看起来像这样 public class Manager { private static volatile Manager Instance = null; private static final Object InstanceLock = new Object(); private Manager(Object1 object1, Object2 object2, Object3 object3){//…}; public static boolean isInitialized(){ synchronized(InstanceLock){ return Instance == null; } } public static void initialize(Object1 object1, Object2 object2, Object3 object3){ if(Instance == null){ synchronized(InstanceLock){ if(Instance […]

如何用kotlin使用cursorloader

我尝试将我的java项目转换为kotlin,但有一个问题让我困惑。 项目结构: App :用于声明全局变量的应用程序 MainActivity :AppCompatActivity Provider :ContentProvider SectionsPagerAdapter :FragmentPagerAdapter fragment0 : fragment1 :片段实现LoaderManager.LoaderCallbacks 当我尝试将fragment1转换为kotlin时,它会抛出FC。 fragment1 java代码: class fragment1 : Fragment(), LoaderManager.LoaderCallbacks<Cursor> { private var mMainView: View? = null private var adapter: SimpleCursorAdapter? = null private var cursor: Cursor? = null private var date: Date? = null private var kadaihao: Array<String?>? = null private val […]

为什么Kotlin字节码引用java.util.function.BiConsumer?

从我所了解的Kotlin应该可以使用JRE 6运行。但是,这个代码与在地图上的foreach失败,因为对Java 8类( java/util/function/BiConsumer )的引用, CompilerTest.kt: fun main(args: Array<String>) { val aMap = mapOf("bar" to "bat") aMap.forEach { k, v -> println("$k -> $v")} } 编译Kotlin代码: » kotlinc CompilerTest.kt -jvm-target 1.6 -include-runtime -d compilerTest.jar 在JRE 6上测试编译的代码: » docker run –rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp openjdk:6-jdk-slim java -jar compilerTest.jar Exception in thread "main" java.lang.NoClassDefFoundError: java/util/function/BiConsumer at […]

如何将Java分配表达式转换为Kotlin

在Java中的东西 int a = 1, b = 2, c = 1; if ((a = b) !=c){ System.out.print(true); } 现在应该把它转换成kotlin var a:Int? = 1 var b:Int? = 2 var c:Int? = 1 if ( (a = b) != c) print(true) 但这是不正确的。 这是我得到的错误: in " (a=b)" Error:(99, 9) Kotlin: Assignments are not expressions, and only expressions are […]

java.lang.VerifyError用kotlin创建一个gradle任务

我尝试用kotlin写一个gradle任务,这是我的代码: GreetingTask.kt class GreetingTask : DefaultTask() { @TaskAction fun greet() { println("greet!") } } 的build.gradle buildscript { repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:0.12.613" } } apply plugin: "kotlin" dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:0.12.613" compile gradleApi() } GreetingTaskTest class GreetingTaskTest { @Test public fun canAddTaskToProject() { val project = ProjectBuilder.builder().build() val task = project.task(hashMapOf("type" to […]

Kotlin中@JvmSynthetic的用途是什么?

我遇到了@JvmSynthetic -stdlib中的@JvmSynthetic注解,我想知道它是什么,但不幸的是,它是无证的。 据我所知,将其应用到程序元素将添加synthetic修饰符到相应的字节码元素。 因此,元素在Java中变得不可见: class MyClass { @JvmSynthetic fun f() { } } Java代码中的某处: MyClass c = new MyClass(); cf() // Error: cannot resolve method f() 但是在Kotlin代码中仍然可以看到相同的元素: val c = MyClass() cf() // OK 隐藏来自非Kotlin资源的声明是否有效使用@JvmSynthetic ? 这是预期的用途吗? 什么是其他适当的用例? 由于@JvmSynthetic隐藏了Java的函数,所以它们不能在Java中被覆盖(当涉及到一个abstract成员时,这些调用将导致AbstractMethodError )。 鉴于此,我可以使用@JvmSynthetic来禁止在Java源代码中覆盖Kotlin类的成员吗?