Tag: kotlin

为什么有可能调用kotlin的构造函数的默认参数,但不是一个方法?

我很好奇为什么有可能调用kotlin的构造函数与默认参数,而不是从java代码的方法? 例如: class Test(val test: String = “”) Java客户端: void test() { new Test(); } 没关系。 但是如果我想用方法做同样的技巧,这是不可能的: class Test { fun x(x: Int = 5) { } } Java客户端,编译错误: void test() { new Test().x(); } 在我看到的方法反编译为java字节码 X $默认 方法。 它是静态的,我不能从Java调用它(想法不允许我这样做)。 而且只有添加了 @JvmOverloads 使用默认arg的kotlin方法的注解创建了一个可从java端访问的方法。 问题是为什么有两种方法如何从java调用kotlin的默认值? 为什么不做一切可以访问/默认情况下不可访问? 这是一个糟糕的设计,还是有这个严肃的理由?

Kotlin JS项目的基本Gradle脚本Kotlin文件是什么样的?

我正在尝试使用Kotlin-DSL在Kotlin中编写一个Gradle构建脚本。 到目前为止,我已经看到了关于如何为Java项目完成的例子。 然而,因为我正在Kotlin开发一个React Native应用程序,所以没有任何教程可以用来制作Kotlin / JavaScript项目。 那么为了这个目的,一个基本的 Gradle脚本Kotlin文件是什么样的?

可以用最好的值来观察

我实现了一个名为“FilterByLatestFrom”的伪操作符作为kotlin的扩展函数。 我用这个运算符写下了下面的代码: fun testFilterByLatestFromOperator(){ val observableA : Observable = Observable.fromArray(1,2,3,4,5,6,7,8,9,10) val observableC : PublishSubject = PublishSubject.create() val observableB : Observable = Observable.just(2).mergeWith(observableC) observableB.subscribe { println(“observableB onNext: $it”) } observableA .subscribe({ println(“Original : $it”)}) observableA.filterByLatestFrom(observableB, BiFunction { aVal, bVal -> aVal%bVal==0 }) .subscribe({ println(“Result A : $it”) }) observableC.onNext(3) observableA.filterByLatestFrom(observableB, BiFunction { aVal, bVal -> aVal%bVal==0 […]

在Spring WebFlux中实现Spring Cloud Sleuth的TracingWebFillter

我有一个使用Spring Cloud Sleuth的function端点(Kotlin)的Spring Boot Reactive应用程序。 我想自定义响应标题以包含跟踪标识。 我看了一下手册,看到使用TraceFilter的部分: 1 我试图使用TraceWebFilter做同样的事情,但它不公开构造函数。 有什么方法可以在使用Reactive Web Framework时实现这个定制。 我为Spring Cloud Sleuth使用了2.0.0.M5版本 提前致谢!

未解决的参考:kotlinx

我正尝试在Android Studio中尝试Kotlin和Kotlin Android扩展。 我已经在Ubuntu 14.04上的Android Studio v 1.5.1以及OS X El Capitan上的Android Studio v 1.5.1上尝试了这一点,获得了相同的结果。 这是我在做什么: 我安装了Kotlin插件1.0.0-beta-35950-IJ141-11 创建一个新的空白Android项目 将MainActivity文件转换为Kotlin(通过help-> findaction->将文件转换为kotlin) 为Kotlin配置项目 然后我进入生成的content_main.xml文件并为“Hello World!”添加一个id(hello)。 TextView中。 然后在转换的MainActivity中添加一行来设置TextView。 (如下所示)。 然后Android Studio会提示我(通过alt-enter)插入这一行(如下所示) import kotlinx.android.synthetic.main.content_main.* 所以在这一点上一切似乎都很好 但是当我尝试编译这个我得到 Unresolved reference: kotlinx Unresolved reference: kotlinx Unresolved reference: hello 请注意,我没有安装Kotlin Android扩展程序插件。 就在几天前,现在应该包含在主插件中,并被标记为过时。 (事实上​​,如果您在安装最新的插件时尝试安装它,则不会安装任何新的插件) 任何人看到我在做什么错了? 主要活动 import android.os.Bundle import android.support.design.widget.FloatingActionButton import android.support.design.widget.Snackbar import android.support.v7.app.AppCompatActivity import […]

“意外覆盖:以下声明具有相同的JVM签名”在实现Java接口时

我遇到了以下错误,试图扩展RuntimeException,并从我的Kotlin代码实现Java中定义的GraphQLError接口。 这是错误的: 意外覆盖:以下声明具有相同的JVM签名(getMessage()Ljava.lang.string;): public open fun (): String? defined in NegativeCountException public open fun (): String? defined in NegativeCountException public open fun getMessage(): String? defined in NegativeCountException public open fun getMessage(): String? defined in NegativeCountException 以下是我的代码: class NegativeCountException() : RuntimeException(), GraphQLError { override fun getMessage(): String? { TODO(“not implemented”) } } 其中GraphQLError是一个接口,在Java中定义,如下所示: public interface GraphQLError […]

Android:自定义字体文字周围的垂直空间

我从Noto字体家族下载了一些字体,将它们放在资源文件夹中,然后将它们加载到一个Typeface对象中,然后以编程方式在TextView上设置字体,但是当我这样做的时候,还有一些额外的垂直填充文本。 就好像文本高度或行高已经改变一样。 请注意,我正在使用Kotlin / Anko,所以与常规的Java / XML相比,语法可能看起来很奇怪: textView { text = someSpannableString padding = dip(10) isSelectable = true typeface = someTypefaceInstance } 我试图做到这一点: setLineSpacing(0f, 1f) 但它没有改变任何东西。 对于什么是值得的,这里的特殊字体是“NotoSerifCJKjp-Regular.otf”

适配器或ViewHolder中的Kotlin综合

我是kotlin的新手。 我发现并尝试使用合成方法,而不是在我的Activity类中使用烦人的方法findViewById ,但是我发现“如果我们想调用View的综合属性(在适配器类中有用),我们还应该导入kotlinx.android.synthetic .main.view。*“。 但我不明白它是如何工作的? 有没有例子?

如何配置kotlin-logging记录器

为了在我的Kotlin项目中进行日志记录 ,我正在使用kotlin-logging ,但是我错过了一个非常中心的观点:如何配置记录器的日志级别? 默认情况下,它被设置为信息,我想将其设置为调试。 由于在Github页面上没有任何关于GitHub页面的内容,也没有任何方法来以编程方式设置关卡,所以我查看了slf4j,因为kotlin-logging是一个包装。 显然我必须像这样设置一个系统属性: -Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG 但是我不知道如何在Kotlin做到这一点。 任何人都可以帮助我?

使用默认值推断类types的参数

我有一个这样的构造函数类声明 class Facade( val kClass: KClass = SuperClass::class ) 这样做是为了让开发人员不必指定SuperClass,如果他们想使用它而不是一个子类。 甚至发送类types的原因是,所以开发人员不必在尖括号中指定types。 但现在出现这个问题。 像下面这样创建实例,表示没有足够的信息来推断参数T.这导致必须将类放在尖括号中。 Facade() 但是由于默认值是SuperClass,所以kotlin应该能够将参数T推断为SuperClass。 我在想什么错 谢谢 TL; DR: Facade(SubClass:class) // working Facade(SuperClass:class) // working, but don’t want (superclass is default) Facade() // working, but don’t want angle brackets Facade() // not working, cannot infer T type from default, why?