Tag: kotlin

辛特尔顿在Kotlin有争论

Kotlin参考文献说,我可以使用object关键字创建一个单例,如下所示: object DataProviderManager { fun registerDataProvider(provider: DataProvider) { // } } 不过,我想通过一个论点来说明这个对象。 例如Android项目中的ApplicationContext。 有没有办法做到这一点?

Kotlin:appendText和关闭资源

我是Kotlin的新手,但是我有一个强大的Java背景(Java是我的日常工作)。 我喜欢Kotlin的一些快捷功能。 其中一个重要的是File.appendText()。 IMO非常方便。 我的问题是关闭资源。 如果我要使用一个作家,我会做这样的事情: out8.writer().use { … } 但是我没有直接在appendText方法上看到任何表示关闭资源的东西。 Kotlin是在幕后为我处理的,还是这个我不得不以另一种方式担心呢? 谢谢。

Kotlin的逆变

我从来没有真正理解Java中的泛型,所以似乎是Kotlin的情况。 考虑下面的代码片段(这是一个人为的例子): class AnyComparator: Comparator<Any> { override fun compare(o1: Any, o2: Any): Int { TODO("not implemented") } } fun <T> test() { val x: Comparator<in Double> = AnyComparator() // OK! val y: Comparator<in T> = AnyComparator() // Compilation error } 第二个分配失败,出现错误 Type mismatch. Required: kotlin.Comparator<in T> Found: AnyComparator 现在,如果我理解正确, in修饰符指示T只被泛型类型Comparator (它使逆变)消耗,所以我应该能够分配任何具有类型参数E Comparator ,它是T的基类。 基于此,我应该能够将AnyComparator分配给变量x和y ,因为Any类型是Kotlin中每个类的基类。 […]

Kotlin反射问题

我有这些方法在Java库中声明: Engine.java: public <T extends EntitySystem> T getSystem(Class<T> systemType) Entity.java: public <T extends Component> T getComponent(Class<T> componentClass) 现在,我使用这些方法很多,我真的很喜欢到处使用MyComponent::class (即kotlin反射)而不是更详细的javaClass<MyComponent>() 。 我的EntitySystem和Component实现是用Kotlin编写的。 所以我想我会创建带KClasses扩展函数,但我不太清楚如何使它们工作。 东西沿线… public fun <C : Component> Entity.getComponent(type: KClass<out Component>): C { return getComponent(type.javaClass) } 但是这不起作用有几个原因:编译器说类型推断失败,因为javaClass返回Class<KClass<C>> 。 而我需要Class<C> 。 我也不知道如何使方法正确通用。 任何人都可以帮我创建这些方法吗?

匹配括号kotlin的方式

我给Kotlin一个去; 内容编码,我有一个字符串的ArrayList,我要分类取决于括号如何匹配: (abcde) // ok characters other than brackets can go anywhere )abcde( // ok matching the brackets 'invertedly' are ok (({()})) // ok )()()([] // ok ([)] // bad can't have different overlapping bracket pairs ((((( // bad all brackets need to have a match 我的解决方案出来(递归): //charList is a property //Recursion starter'upper private fun […]

Kotlin插座

我期待在Kotlin开发一个使用套接字的应用程序, 不幸的是kotlinx套接字被破坏,并没有达到与当前kotlin 1.1协程的connect 。 (我已经看到这个在7月16日已经被@sundwarf的github视为一个未解决的问题了) 具体来说,kotlinx.sockets的示例代码使用以下形式的连接: aSocket().tcp().connect(InetSocketAddress(InetAddress.getByName("google.com"), 80)) 这在这里有一丝痕迹 。 我正在寻找一个可用的连接的示例,或者向kotlix.sockets提供一个备用包的建议。 显然有许多kotlin应用程序使用套接字,所以要么有kotlinx.sockets的替代品,要么解决连接问题。

Intellij Idea中的失落Kotlin支持14.1

我在Kotlin有一个Android项目,在Idea 14中工作正常。但是在更新到14.1时,我似乎已经失去了在IDE中对Kotlin的支持。 没有选择创建一个新的Kotlin文件,右键单击包,没有语法高亮显示,自动完成等等任何Kotlin文件。 Kotlin插件已安装并启用。 还有谁遇到这个问题?

在Kotlin中测试预期的例外

在Java中,程序员可以为JUnit测试用例指定预期的异常,例如: @Test(expected = ArithmeticException.class) public void omg() { int blackHole = 1 / 0; } 我如何在Kotlin做这个? 我已经尝试了两种语法变体,但都没有工作: import org.junit.Test as test // … test(expected = ArithmeticException) fun omg() Please specify constructor invocation; classifier 'ArithmeticException' does not have a companion object test(expected = ArithmeticException.class) fun omg() name expected ^ ^ expected ')'

Aspectj不能和kotlin一起工作

我想在kotlin中使用aspectj aop,这里是我的代码: 我在annotation.lazy_list中的注释: 科特林: package anotation @Retention(AnnotationRetention.RUNTIME) @Target(AnnotationTarget.FUNCTION) annotation class lazy_list 我的课程: @Aspect class ActiveListAop{ @Pointcut("execution(@annotation.lazy_list * *(..))") fun profile() { } @Before("profile()") fun testModeOnly(joinPoint: JoinPoint) { println("123") } } 我的用法: @lazy_list fun all():List<T>{ return lazy_obj?.all() as List<T> } 当我打电话all()函数,没有错误,但不会打印“123”,为什么?

尝试在IntelliJ IDEA中运行Kotlin脚本

我正在通过做Kotlin Koans int IntelliJ EduKotlin插件( https://plugins.jetbrains.com/plugin/8186 )来学习Kotlin。 在执行任务并运行它们的情况下,这个插件正在运行,我无法创建新的Kotlin脚本并在没有此插件的情况下运行它。 示例代码在一个名为Hello.kt的文件中: fun hello() : String { return "ok" } 然后,我创建了从“Kotlin脚本”派生的新运行配置,将“工作目录”设置为ProjectName / src文件夹(或ProjectName文件夹,结果相同),然后IDE向我显示“无法找到脚本文件:Hello.kt”下面的屏幕: 事实上,在试图运行脚本时,我得到了以下堆栈跟踪: "C:\Program Files\Java\jdk1.8.0_74\bin\java" -Dfile.encoding=windows-1250 -classpath C:\Users\myUser\.IdeaIC2016\config\plugins\Kotlin\kotlinc\lib\kotlin-compiler.jar;C:\Users\myUser\.IdeaIC2016\config\plugins\Kotlin\kotlinc\lib\kotlin-reflect.jar;C:\Users\myUser\.IdeaIC2016\config\plugins\Kotlin\kotlinc\lib\kotlin-runtime.jar org.jetbrains.kotlin.cli.jvm.K2JVMCompiler -script Hello.kt exception: java.lang.RuntimeException: Failed to evaluate script: kotlin.KotlinNullPointerException at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileScript(KotlinToJVMBytecodeCompiler.kt:263) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileAndExecuteScript(KotlinToJVMBytecodeCompiler.kt:212) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:181) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:49) at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.java:181) at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.java:138) at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.java:57) at org.jetbrains.kotlin.cli.common.CLICompiler.doMainNoExit(CLICompiler.java:248) at org.jetbrains.kotlin.cli.common.CLICompiler.doMain(CLICompiler.java:238) at […]