Kotlin JUnit规则

在Kotlin M13中,这是创建JUnit规则的可接受的方法: @Rule @publicField val temp = TemporaryFolder() 既然@publicField已经被弃用了,那么还能如何实现呢? IDE的提示建议用@publicField替换@publicField ,但是不能再lateinit val的,我不确定这会有帮助。

JRebel可以通过maven的kotlin-maven-plugin插件重新加载Kotlin类吗?

JRebel可以在Maven上使用kotlin-maven-plugin插件时重新加载Kotlin类吗? 该项目在应用程序服务器上运行。

与java8和Kotlin错误

我有一个应用程序,我在使用retrolambda,所以在build.gradle我有 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } 一切都很好,除非我加入对Kotlin的支持。 添加Kotlin插件我得到以下错误: 错误:将字节码转换为dex时出错:原因:Dex无法解析版本52字节码。 这是由使用Java 8或更高版本编译的库依赖性引起的。 如果在库子模块中使用“java”gradle插件,则将targetCompatibility ='1.7'sourceCompatibility ='1.7'添加到该子模块的build.gradle文件中。 我发现许多类似于这个问题的答案,但没有解决方案适用于我的情况。 这是我的build.gradle: buildscript { repositories { maven { url 'https://maven.fabric.io/public' } mavenCentral() } dependencies { classpath 'me.tatarka:gradle-retrolambda:3.3.1' classpath 'io.fabric.tools:gradle:1.+' } } repositories { // Required because retrolambda is on maven central mavenCentral() maven { url 'https://maven.fabric.io/public' } maven { […]

TreeWalker检查不与Kotlin / Gradle一起工作?

我想使用CheckStyle(7.1) (旧版本有相同的问题)运行Gradle(2.14.1)的Kotlin程序。 正常的模块/检查(例如NewlineAtEndOfFile , FileTabCharacter ,…)像魅力一样工作,但TreeWalker (ex AvoidStarImport )的子模块都没有。 gradle test完成了BUILD SUCCESSFUL (并且我200%确定应该有样式错误),并且在build/reports/checkstyle/main.html文件中有xx文件,但是有0个错误。 TreeWalker不能和Kotlin一起工作吗? 我找不到任何有关这方面的信息:/ build.gradle文件中的配置: … apply plugin: 'checkstyle' … checkstyle { toolVersion = "7.1" configFile = new File(rootDir, "checkstyle.xml") checkstyleMain.source = "src/main/kotlin" checkstyleMain.ignoreFailures = false checkstyleMain.showViolations = true } …

Kotlin从JSON获取价值

在kotlin repl: >>> import java.io.StringReader >>> val json = p.parse(StringReader("""{"abc":"123"}""")) as JsonObject >>> json.string("abc") error: unresolved reference: string json.string("abc") ^ >>> json JsonObject(map={abc=123}) 获取错误未解决的参考。 没有在这里的例子: https : //github.com/cbeust/klaxon工作

辛特尔顿在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 […]