Articles of jvm languages

Kotlin: компилятор не выводит общий тип для некоторых операторов

Почему компилятор Kotlin не может указать общий тип с некоторыми вызовами оператора? Например: class Example { operator inline fun <reified T : Any> unaryMinus(): T { … } } Используя его в основном методе … fun main(args: Array<String>) { val ex = Example() val works: Boolean = ex.unaryMinus() val doesntWork: Boolean = -ex }

Есть ли чистый способ использования методов расширения Groovy в Котлине?

Например, Groovy позволяет получить текст файла, представленный java.nio.file.Path следующим образом: // Groovy code import java.nio.file.Path import java.nio.file.Paths Path p = Paths.get("data.txt") String text = p.text Я хотел бы иметь возможность повторно использовать метод расширения text Groovy в Котлине. Обратите внимание : я знаю, что у Котлина есть связанный метод для этого конкретного случая. Тем не […]

Являются ли неправильные типы Котлина для примитивов на JVM?

Если вызов функции Kotlin подтверждает примитив, скажем, Int , класс «пройден» является тем, что для примитива в штучной упаковке, а не для распакованной версии. inline fun <reified T> reify() = T::class @Test fun reified_type_doesnt_match_for_primitive() { assertNotEquals(Int::class, reify<Int>()) assertNotEquals(Int::class.java, reify<Int>().java) assertNotEquals<Any>(Int::class, reify<Int?>()) val nullableInt: Int? = 42 assertNotEquals(nullableInt!!.javaClass.kotlin, reify<Int>()) assertEquals<Any>(java.lang.Integer::class.java, reify<Int>().java) } @Test fun reified_type_matches_for_class() { […]

Как сопроводители реализуются в JVM-языках без поддержки JVM?

Этот вопрос возник после прочтения предложения Loom , в котором описывается подход реализации сопрограмм на языке программирования Java. В частности, это предложение говорит о том, что для реализации этой функции на языке потребуется дополнительная поддержка JVM. Насколько я понимаю, на JVM уже есть несколько языков, которые имеют сопрограммы как часть их набора функций, таких как […]