有没有办法在Kotlin中混合语句(如打印语句)和成员分配? 这里是我想要做的一个例子(用Java): class MySystem { ComponentA componentA; ComponentB componentB; public MySystem() { System.out.println(“Initializing components”); this.componentA = new ComponentA(); System.out.println(“Constructed componentA”); this.componentB = new ComponentB(); System.out.println(“Constructed componentB”); } } 感谢任何输入,谢谢。
代码(下面显示)是否正确? 这是来自Kotlin-docs.pdf的第63页,这也是https://kotlinlang.org/docs/reference/generics.html的最后一个代码片段 fun cloneWhenGreater(list: List, threshold: T): List where T : Comparable, T : Cloneable { return list.filter { it > threshold }.map { it.clone() } } 按照原样,编译器失败:1. 在kotlin中定义的接口Comparable的预期types参数 2. types推断失败。 期望的types不匹配:推断的types是列表,但期望列表 3. 不能访问“克隆”:它在“克隆” 前两个错误很容易通过将代码更改为以下来解决: fun cloneWhenGreater(list: List, threshold: T): List where T : Comparable, T : Cloneable { return list.filter { it > threshold […]
我已经将Kotlin库添加到了我现有的项目中。 之后,我得到构建错误。 我评论了最近添加的所有库,并检查了添加kotlin库后的主要问题 Error:Execution failed for task ‘:app:transformClassesWithMultidexlistForDebug’. > java.io.IOException: Can’t write [/home/imedrix-server/StudioProjects/kardioscreen-operatorapp/app/build/intermediates/multi-dex/debug/componentClasses.jar] (Can’t read [/home/imedrix-server/StudioProjects/kardioscreen-operatorapp/app/build/intermediates/transforms/desugar/debug/76.jar(;;;;;;**.class)] (Duplicate zip entry [76.jar:org/intellij/lang/annotations/Flow.class])) 项目gradle buildscript { ext.kotlin_version = ‘1.2.21’ repositories { google() jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:3.0.1’ classpath ‘com.google.gms:google-services:3.0.0’ classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” classpath (‘com.google.firebase:firebase-plugins:1.0.5’) { exclude group: ‘com.google.guava’, module: ‘guava-jdk5’ } } } allprojects { repositories { google() […]
我刚刚开始使用Kotlin Programming Language ,它比Java更酷。 我对静态方法和领域有一些疑问, Q1:官方文件说 如果您将这些函数注释为@JvmStatic,Kotlin也可以为命名对象或伴随对象中定义的函数生成静态方法。 但是,如果你看到下面我可以访问bar()方法作为静态方法,它不使用@JvmStatic注释工作。 但官方文档抛出错误 – > Kotlin静态方法 。 Class C{ companion object{ @JvmStatic fun foo() { } fun bar(); } } fun main(args: Array) { C.foo(); C.bar(); //this line works fine } Q2:我真的需要@JvmStatic和@JvmField来使事情变得静态吗? :正如你可以看到的companion对象,事情按预期工作。 happyCoding
我有一个用Java编写的框架,使用reflection,获取注释上的字段,并根据它们做出一些决定。 在某些时候,我也可以创建一个注释的临时实例并自己设置字段。 这部分看起来像这样: public @interface ThirdPartyAnnotation{ String foo(); } class MyApp{ ThirdPartyAnnotation getInstanceOfAnnotation(final String foo) { ThirdPartyAnnotation annotation = new ThirdPartyAnnotation() { @Override public String foo() { return foo; } }; return annotation; } } 现在我正在努力做Kotlin的确切的事情。 请记住,注释位于第三方jar中。 无论如何,这里是我在Kotlin试试的: class MyApp{ fun getAnnotationInstance(fooString:String):ThirdPartyAnnotation{ return ThirdPartyAnnotation(){ override fun foo=fooString } } 但编译器抱怨:Annotation类不能被实例化 所以问题是:我应该如何在Kotlin中做到这一点?
我想用Kotlin读取yaml配置文件,下面是我的代码: application.yml message: messages: – name: abc type: aaa size: 10 – name: xyz type: bbb size: 20 MessageConfig.kt package com.example.demokotlin import org.springframework.boot.context.properties.ConfigurationProperties import org.springframework.context.annotation.Configuration import java.math.BigDecimal @ConfigurationProperties(prefix = “message”) @Configuration class MessageConfig { lateinit var messages: List } class Message { lateinit var name: String lateinit var type: String lateinit var size: BigDecimal } […]
我已经更新了Kotlin插件到版本1.1.61,但Android工作室不启动新的插件。 错误: Plugin ‘org.jetbrains.kotlin’ failed to initialize and will be disabled. Please restart Android Studio. com.intellij.openapi.extensions.impl.PicoPluginExtensionInitializationException: Duplicate registration for EP: org.jetbrains.uast.uastLanguagePlugin: original plugin com.intellij, new plugin org.jetbrains.kotlin
我将Kotlin插件安装到我的应用程序中(v1.1.1-release-Studio2.2-1),然后选择“在项目中配置Kotlin”我选择了编译器和运行时版本1.0.7。 Kotlin更新了我的Gradle文件。 现在,当我尝试建立我得到: 错误:配置项目“:app”时发生问题。 无法解析配置的所有依赖关系:“app:_debugApkCopy”。 找不到org.jetbrains.kotlin:kotlin-stdlib-jre7:1.0.7。 要求: 所有MyApplication:应用程序:未指定 我不知道我在这里错过了什么。
我是Kotlin的新开发人员。 我喜欢这门语言,而且我喜欢用它来完成Web应用程序的轻松。 问题是,我不知道如何在浏览器中运行Kotlin HTML builder文件,以便我可以在kotlin中创建一个基本的网页框架。 我可以在IDE中输出它,但是看起来好像是让它在我的浏览器中运行是很愚蠢的。 这可能是一个愚蠢的问题,我错过了一些非常明显的东西,但我似乎无法在网上find答案。 请记住,我没有使用Intelli-J IDE。 会喜欢,但不能付出鼻子只是为了在Kotlin做网页开发。 一直在使用Eclipse。 提前致谢。
我是新来的kotlin。 我有一个与2重载的方法的Java类。 一个接受一个function,另一个接受两个function mapToEntry(Function valueMapper) 和 mapToEntry(Function keyMapper, Function valueMapper) nowm in kotlin,我试图调用与2参数的版本(如在Java中): myClass.mapToEntry(r -> r, r -> r) 但我得到编译错误。 Kotlin:意外的令牌(使用’;’来分隔同一行上的expression式) 什么是正确的语法?