Kotlin配置几个口味

我得到了我的项目配置几个口味的问题。 我有2个env-s,用于分期制作。 它的配置设置为flavor-stage/Env.java和flavor-prod/Env.java ,它的工作原理与Java代码一样,也可以从Kotlin类中看到,但是在编译时会崩溃 Error:(19, 23) Unresolved reference: Env 看来Kotlin可以从另一个风格的文件夹中解析类。 请帮助配置它。 我的gradle.build是: sourceSets { main.java.srcDirs += 'src/main/kotlin' } buildscript { ext.kotlin_version = '1.0.4' repositories { jcenter() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.6" classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" } }

不能实现接口kotlin

突然,我的android工作室不允许我实现接口,当我使用Kotlin,我不能导入接口 任何人都遭受与kotlin相同的问题? 问题是真实的,我无能为力解决这个问题 interface AppPrefManager { fun isUserLoggedIn: Boolean }

Kotlin:什么是kotlin.String! 类型

我是Kotlin新手。 你能解释一下“kotlin.String!”是什么意思吗? 类型,我怎么能让下面的代码来编译? fun withDefault<A>(computation: () -> A, default: A) = try { computation() } catch (e: Exception) { default } fun getHostname1() = withDefault(InetAddress.getLocalHost().getCanonicalHostName, "localhost") 编译器打印下面的消息: Kotlin: Type inference failed: fun <A> withDefault(computation: () -> A, default: A): A cannot be applied to (kotlin.String!,kotlin.String) 谢谢。

如何在Kotlin中声明原始类型?

在Java中,我可以声明这一点 private List a; //onCreate a = new ArrayList() 但在Kotlin它显示错误,这迫使我具体的类型 private List<String> a 有时我不想提供一个类型(我不需要),但它显示Kotlin中的错误例如在Java中 public abstract class BaseActivity<T extends ViewDataBinding> extends AppCompatActivity { //something } public abstract class BaseFragment { private BaseActivity activity; //something } //in kotkin I can't write lateinit var activity: BaseAtivity //show error here (I have to specific a type but this […]

访问Kotlin的财产代表

Kotlin已经委派了属性,这是一个非常好的功能。 但有时get()和set()方法是不够的。 假设我想要Closeable地创建一个Closeable对象并稍后关闭它。 下面是一个如何实现这样的委托属性的例子: fun <T : Closeable> closeableLazy(initializer: () -> T) = CloseableLazyVal(initializer) class CloseableLazyVal<T : Closeable>( private val initializer: () -> T ) : ReadOnlyProperty<Any?, T> { private var value: T? = null override fun get(thisRef: Any?, desc: PropertyMetadata): T { if (value == null) { value = initializer() } return value } […]

Kotlin:lambda从不编译

我刚刚开始学习Kotlin,在那里我遇到了lambda语法问题。 有一个小例子: class MathFunctions { @FunctionalInterface interface Operation { fun calculate(a: Int, b: Int): Int } fun makeCalculations(a: Int, b: Int, operation: Operation): Int = operation.calculate(a, b) companion object { @JvmStatic fun main(args: Array<String>) { val plus = Operation { a, b -> a + b } val mathFunctions = MathFunctions() println(mathFunctions.makeCalculations(10, 20, plus)) } […]

Kotlin意想不到的“未解决的参考”

我是Kotlin的初学者,这是我的代码: class C(val boy: Int = 0) { fun <T, E> boy(i: Int) = i } fun girl(b1: Boolean, b2: Boolean) = println("boy($b1, $b2)") fun main(args: Array<String>): Unit { val A = 234 // see? A defined! val B = 345 // see? B defined! val c = C(123) // c is also defined! girl(c.boy […]

编译Kotlin到JavaScript

我已经开始研究Kotlin,我想用它代替TypeScript作为我的前端语言。 都编译到JavaScript,所以我想设置它,使我做一个Kotlin文件,让我们叫它myFile.kt ,然后当我运行编译器,它使一个myFile.js文件。 就像TypeScript如何使用myFile.ts并将其编译到myFile.js 。 我正在使用最新版本的IntelliJ 15与Kotlin的候选版本1。 我一直在搜索整个互联网的方式来做到这一点,但到目前为止,我发现设置IntelliJ,以便Kotlin从您的代码在JAR文件中创建一个JavaScript库。 我也没有能够得到这个编译我的项目中的任何kt文件(他们以前是js文件)。 我现在想做什么,或者我是以错误的方式思考这个问题?

Kotlin访问修饰符

我试图学习Kotlin,并且遇到了关于访问修饰符的困惑,与Java相比,Kotlin具有私有,公共,内部和受保护的访问修饰符, 那么内部与包相同吗? 一个小例子: package A private fun foo() {} // visible inside example.kt public var bar: Int = 5 // property is visible everywhere private set // setter is visible only in example.kt internal val baz = 6 // visible inside the same module

Kotlin`typealias`功能

根据Kotlin词法分析器的来源,有一个typealias关键字,它不像“ yield和typeof那样“保留供将来使用”。 此外, 语法参考建议typealias应该是一个类成员声明有效的关键字,当我在IntelliJ IDEA(Android Studio)与Kotlin插件键入typealias它认识到它作为关键字,但我期待成员声明错误。 我也尝试过使用它的“常用”语法,例如像它在Swift中实现,但没有成功。 那么,Kotlin中实际实现的typealias功能(1.0版本),如果是的话,它的语法是什么? 有没有任何文件描述它的使用? 更新 Kotlin 1.1支持别名现在已经出来了!