Tag: kotlin

Java Stream with :: new to Kotlin

我试图将以下Spring Security代码从Java转换为Kotlin。 Java的: Collection<? extends GrantedAuthority> authorities = Arrays.stream(claims.get(AUTHORITIES_KEY).toString().split(",")) .map(SimpleGrantedAuthority::new) .collect(Collectors.toList()); 科特林: val authorities = Arrays.stream(claims[AUTHORITIES_KEY].toString().split(",".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()) .map(SimpleGrantedAuthority()) .collect(Collectors.toList<SimpleGrantedAuthority>()) 我在.map(SimpleGrantedAuthority())得到一个类型不匹配错误( Required: Function<in String!, out (???..???)>! 如何正确使用::new关键字将上述Java代码转换为Kotlin?

Kotlin的可派生派生类

我使用Android Parcelable插件从https://github.com/nekocode/android-parcelable-intellij-plugin-kotlin 我用这个定义在一个类上试了一下 class ChessClock : TextView { lateinit var player:String constructor(context: Context) : super(context) constructor(context:Context, p:String, angle:Float) : this(context) { player = p rotation = angle } <snip> } 并将定义更改为 class ChessClock() : TextView, Parcelable { lateinit var player:String constructor(context: Context) : super(context) constructor(context:Context, p:String, angle:Float) : this(context){ player = p rotation = angle […]

Kotlin中无限序列的递归定义

我正在试验Kotlin序列,特别是对于以前的值不是简单计算的更复杂的序列。 我想定义的一个例子是所有素数的序列。 定义下一个素数的简单方法是下一个整数,它不能被序列中任何前面的素数整除。 在Scala中,这可以转换为: def primeStream(s: Stream[Int]): Stream[Int] = s.head #:: primeStream(s.tail filter(_ % s.head != 0)) val primes = primeStream(Stream.from(2)) // first 20 primes primes.take(20).toList 我很难把这个翻译成Kotlin。 在scala中它的工作原理是因为你可以传递函数来返回一个将被懒惰评估的序列,但是我不能在Kotlin中做同样的事情。 在Kotlin我试过了 fun primes(seq: Sequence<Int>):Sequence<Int> = sequenceOf(seq.first()) + primes(seq.drop(1).filter {it % seq.first() != 0}) val primes = primes(sequence(2) {it + 1}) primes.take(20).toList() 但是这显然不起作用,因为函数是直接计算的,并导致无限递归。

通用铸造在Kotlin

我有以下的类和接口: public interface ActivityComponent<T extends Activity> { void inject(T activity); } public interface MyActivityComponent extends ActivityComponent<MyActivity> { } public abstract class DaggerActivity extends Activity { abstract ActivityComponent getComponent(Context context); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityComponent component = getComponent(this); } } public class MyActivity extends DaggerActivity { @Override ActivityComponent getComponent(Context context) { MyActivityComponent component […]

有没有官方的Kotlin风格指南?

我只是开始编程Kotlin,每当我学习一门新的语言时,我尝试从一开始就编写推荐的方法(Sun的Java风格指南,Python的PEP8等)。 Kotlin有没有这样的东西? 我似乎无法在网上找到任何说这种或那种方式的东西。

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工作