Kotlin 科特林为什么不说“不”;新";关键词?

为什么kotlin删除了新的关键字? 这样就更难看出函数调用和对象分配之间的区别了。该文件明确指出: 名称使用camelCase(名称中避免下划线) 类型以大写字母开头 方法和属性以小写开头 如果您遵循上述操作,并将构造函数视为可调用的常规函数,即val invoice=invoice()则新建关键字将变为冗余。 一旦您适应了约定,就很清楚代码在做什么 事实上,即使在Java代码中,也会有许多隐式分配发生在方法调用(如或Guava)的下面,因此我认为您关于使用new关键字使分配可见性更好的论

Kotlin中的密封类,不兼容类型错误

我有下面的Kotlin代码。一个名为Animal的密封类和两个对象类Dog和Cat继承自密封类Animal。我在is Cat案例中的when子句中遇到此错误 Incompatible types: Cat and Dog 为什么会出现这个错误?如何使用Kotlin中的密封类来执行此类型的操作?sealed类是执行多态性的好选择吗 sealed class Animal { abstract fun speak() } object Dog : Animal() { overrid

Kotlin Proguard保留公共类、字段和方法

我使用Kotlin,我有很多内部类。 除了所有public类之外,我想混淆和缩小所有内容 前进规则: -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -verbose -optimizationpasses 5 -overloadaggressively -repackageclasses '' -allowaccessmodification -keep public class * { public <

为什么在Java被翻译成Kotlin之后,属性上的修饰符与Getter和Setter相同,而不是字段?

表示默认的可见性修改器是公共的 但从中可以推断它是私人的 这是矛盾吗?kotlin中属性的默认可见性修饰符是什么 ---------以上是第一个问题--------------- 我没有把财产和土地混为一谈。但我确实对如何访问属性感到困惑 为了解决我的困惑,我实际上应该在编辑的标题中提出这个新问题 下面自我回答。属性(以及函数、类和…)的默认可见性确实是公共的 Koan有点让人困惑,因为Java类有带有公共getter的私有字段。 属性可以看作是字段、getter和可选setter的组合。Koa

Kotlin RxJava2:映射器函数中是否允许链接?

在下面的代码中,函数f返回Single println(“Error:$e”)映射内的错误将不会执行,但是我将能够在订阅服务器中打印错误。看起来不允许映射器函数中的链接。对吗?若有,原因为何 编辑:也尝试了flatmap,但结果相同 Observable.flatmap { line -> f(line).toObservable().doOnError { e -> println("Error:$e")

Kotlin中出现错误10001素数

我的代码: import java.util.* fun checkPrime(n : Int): Boolean{ val z = n/2 var stop = false if(n == 0 || n == 1){ stop = true return false } for(i in 2..z){ if(n % i == 0){ stop = true

如何在Ktor(Kotlin)管道的各个部分之间传递数据

我正在构建一个API,并使用intercept(ApplicationCallPipeline.Call){}在每次路由执行之前运行一些逻辑。我需要将数据从intercept()方法传递到被调用的路由,然后 am在intercept()中使用call.attributes.put()设置数据,如下所示: val userKey=AttributeKey(“userK”) call.attributes.put(userKey,userData) 并使用call.attributes[userKe

为什么可以';t Kotlin推断比较器的类型

在阅读Java互操作文档时,我期望使用Kotlin函数 Collections.sortWith(comparator:kotlin.comparator/*=java.util.comparator*/) 为了能够在不需要显式指定参数的情况下获取lambda函数,需要使用比较器。但是,以下代码给出的类型推断失败: val someNumbers = arrayListOf(1, 5, 2) someNumbers.sortWith({ x, y -> 1 }) 鉴于: val some

Kotlin/Java中的简单强制转换

我有一个对象User定义如下 class User(){ var id: Int? = null var name: String? = null} 由于某些原因,我必须创建具有相同参数的新对象User,并且必须将数据从旧类型复制到新类型 class UserNew(){ var id: Int? = null var name: String? = null} 我正在寻找从旧类型转换为新类型的最简单方法。我想做的很简单 var user = User() v

Kotlin 在主线程内运行非阻塞协程

我们有一个特殊的用例,我需要帮助来发现,我们是否可以用Kotlin的协同程序解决我们的问题,或者我们是否必须依赖CompletableFutures 基本上,我们为本身是单线程的服务器编写插件。这意味着,我们可以使用不同的钩子来添加逻辑,并且该逻辑总是在主线程中运行,不能被阻塞。此外,当使用服务器的API时,我们必须在主线程内,因为给定的方法不是线程安全的 为了使用异步代码实现这一点,我们使用服务器的调度程序生成了一个生产者/消费者系统,该系统在后台运行异步任务,并将结果同步回服务器的主线程。实

kotlin-计算年复利

我使用Kotlin,在计算三年后的复利时遇到了一个问题 我试过: fun accountInThreeYears(initial: Int, percent: Int): Double = initial + (initial * percent / 100.toDouble()) * 3 然而,使用在线计算器我得到了不同的答案,我做错了什么?您缺少正确的公式: value after n years = (initial value) x (1 + interest)^n 因此,您的函数应

我们需要初始化kotlin中的可空字段吗?

我最近回顾了一些kotlin代码,所有可为null的字段都初始化为null val x:String之间有什么区别?=空值和值x:String? 我们应该将可空字段初始化为空吗?必须初始化属性。因此,您必须执行初始化var x:String?=空。不赋值只是属性的声明,因此必须将其抽象化抽象值x:String? 或者,也可以在不可为空的类型上使用lateinit。但是这样做的效果是,它不是null,而是未初始化的lateinitvarx:Stringvalx:String?将创建一个未初始化的变

Kotlin 如何在不丢失动画/初始化新适配器的情况下更新嵌套子RecyclerView中的数据?

我有一个ParentData类,其结构如下: class ParentData( //parent data fields var childList: List<ChildData> 我观察到一个LiveData,因此每次嵌入的ChildData更改时,我都会将新的列表提交给我的父回收器,父回收器依次调用OnBindViewHolder并提交新的“childList”并更新内部的子回收器视图 问题是每次更新数据时都会调用val mAdapter=ChildAdapter(),从

Kotlin 仅当调用Observer方法时返回值

我试图实现仅当Observer方法被调用时才返回该方法的值。但是我不知道正确的方法。我使用let,但它是必需的单元,我必须返回可变列表 这就是我的方法: override fun getPlaylistsNameAndId(userCategory: String):MutableList<Pair<String,String>> { val abc = mutableListOf<Pair<String,String>>()

Kotlin 如何检查Ktor内部网络是否已启动?

我需要对我的Ktor应用程序进行一些初始化,但我只想在Netty准备好接受连接后进行初始化。另一方面,我不希望在Netty启动失败时发生这种初始化(例如,典型的“地址已在使用中”) 我实现了直截了当的方法(见下文),但我想知道是否有可能让它变得不那么丑陋 首先,我保存对NettyApplicationEngine的引用: embeddedServer = embeddedServer(Netty, port, module) 然后,我使用NettyApplicationEngine中的通道字段

对类实例使用println时,Kotlin输出异常

我要走了Person@4b67cf4d作为输出 fun main(args: Array<String>){ var person = Person("Jimmy") println(person) } class Person(val name: String){ var age = 10 } fun main(args:Array){ var person=人(“吉米”) println(人) } 类人员(val名称:字符串){ 变量年龄=10 }

在kotlin中减去2个可为空的浮点类型

我有两个可为空的浮点属性,我想减去它们: val dis1: Float? = 10.0f val dis2: Float? = 5.0f val value = dis1 - dis2 我创建了这个扩展函数。但它是无限循环的: operator fun Float?.minus(dis2: Float?): Float { return this - dis2 } 除了调用减号操作符,你什么都不做,这就是得到无限循环的方法 进行空检查并调用Float的默认减号运算符 除了调用减号操作

Kotlin 将类中使用的接口列表传递给构造函数

我有两个接口,有两个不同的变量。 我创建了一个实现这两个接口的类。 现在我想将第一个接口的列表传递给另一个类的构造函数,并使用它的属性(从两个接口)。到目前为止,我成功地获得了构造函数,但我找不到如何传递参数列表 interface A { var name: String } interface B { var job: String } class C( override var name: String, override var job: String

Kotlin 尽管至少存在一个创建者,但无法构造类的实例

当使用Jackson反序列化LocationGeneric时,Kotlin中出现以下问题。在这种情况下,我不向用于构造具体类的抽象类添加额外信息。反序列化LocationOne或LocationTwo时效果很好 这是我写的代码: @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", visible = true) @JsonSubTypes

Kotlin泛型类中的限制

我有: 现在我尝试使用协方差 open class Fruit open class Apple : Fruit() class SmallApple : Apple() class水果盒(水果:T) 所以在我看来,有了“出局”,我应该可以 class FruitBox<out T>(fruit: T) val apple2=水果盒(Apple()) val apple3=FruitBox(Fruit())-未编译,-为什么? 但是我不能把水果放在这个盒子里,为什么?协方差适

Kotlin CoroutineScope阻止当前线程

根据Kotlin文档,协同例程不会阻止当前线程。它们显示了以下代码示例: fun main() = runBlocking { // this: CoroutineScope launch { delay(200L) println("Task from runBlocking") } coroutineScope { // Creates a coroutine scope launch { d

Kotlin 为什么要使用Kind<;F、 A>;而不是F<;A>;

每当你阅读Arrow.kt教程时,随着他们的进步,他们开始吹捧FP的好处,你可以抽象出你的类型,并将所有内容写成fun myFun():Kind,而不是fun myFun():IO或fun myFun():Option 我理解Kind的意思,但我不明白为什么这样做会如此有益。在我看来,您的函数可以返回一个选项、一个或多个IO,而无需更改您的类型,但这真的有这么大的好处吗 我从未在团队项目中使用过FP,也没有在任何具有数十万行代码的项目中使用过FP,因此重构FP可能会很麻烦,Kind意味着您不必更

Kotlin 对象类中的上下文。为什么是内存泄漏?

当我将对象类与上下文一起使用时,它显示警告“不要在静态字段中使用上下文”。 我想知道我为什么不这么做 object Auth { var mContext : Context ?= null } 因为您将保留一个对android可能破坏的活动类的引用。谢谢,我理解

Kotlin 父挂起函数中的这些挂起函数是否按顺序运行?

代码A来自文章 父挂起函数中的这些挂起函数是否按顺序运行 系统首先运行并获得val slow的结果,然后运行并获得val other的结果,最后运行数据库。保存(slow,other),对吗 代码A @WorkerThread suspend fun makeNetworkRequest() { // slowFetch and anotherFetch are suspend functions val slow = slowFetch() val another =

Kotlin Can';t从超类型构造函数隐藏val

我有一个扩展父类的类,如下所示: abstract class BaseClass(val mem: Type) class MyClass(val mem: Type) : BaseClass(mem) 我已将该成员声明为MyClass上构造函数的参数,因为它所扩展的BaseClass需要传入一些内容,但这不起作用,因为编译器告诉我mem“隐藏超类型的成员”。我希望此参数是基类的成员,因此使用val。如何传递MyClass中的参数?虽然BaseClass的构造函数中的参数应该是val,但M

Kotlin MutableMap getter和setter未按预期工作

在一个类中,我有一个MutableMap,我想声明一个getter和一个setter,如下所示: open class StringList() { private val list= mutableListOf<String>() var values: MutableMap<String, String> get() { println("get member") // this is printe

Kotlin修改器或解决方案,用于中间可见性

不知道该在标题中添加什么。。。所以我试着让它尽可能宽 通常,通过可见性修饰符,我们可以向公众公开接口或保留模块的内部接口。我遇到了一个场景,其中一个项目将有多个模块。但是,需要进行模块间通信,这超出了内部可视性的范围,但我不希望在项目外部(即实施我的项目的另一个项目)可以访问模块间通信接口。我觉得这个问题应该出现在外面的某个人身上 我试着研究注释(但在创建自定义注释方面还不太熟悉),看看是否可以用一些黑客的方法来模拟这种行为,但到目前为止运气不好 有什么建议吗

Kotlin 防止在使用导航组件时重新创建片段

我正在使用MVVM和导航组件。当我从片段A导航到B,然后返回到A时,我的片段A将被重新加载,这在我的情况下是不满意的。如何防止在使用导航组件时重新创建片段? 我知道如果我使用片段转换,我可以隐藏和显示片段,但是这种情况下的解决方案是什么

按Kotlin和总和值中的多个字段分组

假设我有如下数据 data class Student(val name: String, val room: Int, val sex: String, val height: Int, val weight: Double){} 我有一份学生名单 val students = listOf( Student("Max", 1, "M", 165, 56.8), Student("Mint", 1, "F", 155, 53.2), Student("Moss"

库模式中的Kotlin流

我希望使用流作为存储库中所有函数的返回类型。例如: suspend fun create(item:T): Flow<Result<T>> 因此,它们都返回数据流。如果您对如何实施该计划有任何想法,我将不胜感激 ------更新#1------ 可能解决方案的一部分: suspend fun create(item:T): Flow<T> { // save item remotely return remoteDataSource.create(it

Kotlin泛型,类型参数的正确语法

我有下面的类,它基本上从AWS获取JSON字符串,然后将其转换为数据类的实例 class SecretsManager(region: String) { private val gson = Gson() private val smClient = AWSSecretsManagerClientBuilder.standard().withRegion(region).build() fun <T> getSecret(id: String): T {

如何在运行时公开的Kotlin中调整表名

我们正在使用以环境名称为前缀的数据库表名称,例如: 我们没有“城市”,而是“城市”,“发展城市”,“生产城市” 问题是模式定义是基于Kotlin对象的,这在使用上很好,但不允许我简单地在构造函数中插入表前缀 所以问题是如何在Kotlin Exposed中实现这样的功能?最后我找到了解决方案,看起来相当优雅。 但我认为,在Kotlin Exposed中也可以做一些改进,以便在大多数情况下解决方案更加简洁 City.kt data class City(val id: Int, val name:

Kotlin从txt.NET文件读取/导入地图

我正在做一个学习项目,该项目旨在将抽认卡导入并导出到一个txt.file文件中,该文件稍后将用于提问 目前,我被困在进口部分,我所做的研究没有真正起作用,因为我没有真正得到它 我有一张完整的地图,我把术语保存在地图中:定义 private var flashCardMap = mutableMapOf<String, String>() 它导出我前面在txt中定义的所有卡片。使用一个或多个Flashcard(Card=Definition)像这样的文件 这就是我被困的地方。我试图导

如何使用kotlin中的数据类发送请求

我需要一个请求或api,但我无法传递方法中的所有参数(因为项目中的detekt不允许传递超过6个参数)。所以我创建了一个数据类。但我的输出方式不正确。 我简化了我的代码: class A { val test = viewModel.RequestParam ("a", "b","c", "d") viewModel.requestTest("nome", "age", tes

在kotlin DSL中访问teamcity参数

我正在为TeamCity项目创建kotlin DSL,并希望在实际的kotlin脚本中获取当前分支名称 如果运行脚本步骤,当前分支将正确渲染 脚本{ name=“打印分支机构” scriptContent=“”echo”分支为%teamcity.build.Branch%” } 从实际的设置.kts,我似乎无法访问它 val currentBranch=DslContext.getParameter(“teamcity.build.branch”)//收益率“” 如何在Kotlin代码中获取

在Kotlin中声明内部常量时删除冗余

我使用的是Kotlin 1.4,有一个MyConstants.kt文件,其中包含以下内容: @file:JvmName("MyConstants") package my.package internal const val A = 1 internal const val B = 2 因为我想要几十个常量,我想知道是否有办法避免为每个常量指定internal。 不需要引入伴生对象或任何类型的实例化。简短回答:不,不需要这样的常量 enum类可能是一种替代方法。在这种情况下

如何让成员函数和顶级函数在kotlin中共享一个类名?

我在Key.kt文件中定义了一个接口Key及其顶级函数: interface Key { //codes... } fun keyOf(vararg content: Any?): Key { //codes... } 因此,在科特林,我可以写: val key = keyOf(...) 但在java中,它是: Key key = KeyKt.keyOf(...) 有点难看。。。因此,我在Key.kt中添加了jvm类名设置: @file:JvmName("Key

Kotlin 使用CoroutineVerticle构建非阻塞VertX服务器

我正在试验VertX+例程,只想检查一下这个设置是否在任何时候阻塞,或者是否有我需要注意的潜在问题 例如,runBlocking在本例中是否正确使用,还是应该执行deployVerticle?然后在requestHandler中,我正在执行GlobalScope.launch,这似乎是不鼓励的,这里使用的正确范围是什么 我已将VertX 4.0.0-milestone5添加到我的Gradle构建脚本中,我没有使用VertX Web: val vertxVersion =

Kotlin Quarkus:自定义安全标识

在quarkus应用程序中,我想开发自己的SecurityIdentity,因为现有的SecurityIdentity不适合我的需要(我需要通过从多个微服务获取角色来检查身份)。也许定制SecurityIdentity不是最好的选择,但看看文档,它似乎是我所需要的(另一个选择是定义ContainerRequestFilter实现,但它的级别较低,集成度较低) 有什么办法吗?我测试了以下内容: @Provider @PreMatching class CustomSecurityIdentity:

这个泛型接口是否有任何错误,或者Kotlin编译器无法推断类型?

假设我们有一个适配器接口: 接口事件适配器{ val事件:E // ... } 以及一些实现: 内联类MessageCreateAdapter(覆盖val事件:MessageCreateEvent):事件适配器{/*…*/} 内联类MessageUpdateAdapter(重写val事件:MessageUpdateEvent):事件适配器{/*…*/} // ... 我们创建事件的扩展以获得相应的适配器: fun E.toAdapter():事件适配器?{ 返回时(此){ 是MessageC

Kotlin类型特定对象声明

我想创建一个可以用特定类型操作声明的类。像这样(我不知道这叫什么): val div:Division=Division(“部门编号17”) val div1=分区(“分区编号15”) 下面是一些其他代码: 类划分(名称:String){ //秘密。。。 } 我如何制作这样的东西: Division<Indonesia>("How?") class Division<T>(name: String) 部门(“如何?”) 你说的是泛型。涵盖基础知

Kotlin 仿制药;类型参数不在其范围内

我最近一直在尝试泛型,发现了一个可以使用它们的好例子,但是,我陷入了困境,我的搜索没有找到解决方案,或者我误解了。请参见下面的代码示例: open class X() class Y : X() class Z : X() abstract class A<T : X> { lateinit var one: T fun setup( one: T ) { this.one = one } } class B<

Kotlin操作符?,,,?:开源实现

我是Kotlin的新手,我正在研究null-safety和Elvis操作符,希望了解更多关于如何在JVM上实现这些操作符的信息 我有兴趣了解以下各项的实施情况: ?。?: 但我无法找到任何与这些相关的来源。这些实现是隐藏的吗?从我的IDE中,我也找不到与这些相关的任何源,magic 从:它指定Kotlin是一种开放源代码语言:Kotlin是一种面向JVM、Android、JavaScript和本机的开放源代码静态类型编程语言 注意:我知道我不需要在Elvis的右侧指定null,这只是为了在屏幕

Ktor—由Application.module函数中的主函数初始化的访问变量 var foo:String?=无效的 趣味主线(参数:数组):单位{ foo=“你好,世界” io.ktor.server.netty.EngineMain.main(args) } @Suppress(“unused”)//在application.conf中引用 @kotlin.jvm.jvm重载 fun Application.module(测试:Boolean=false){ //foo在这里是空的 }

如何访问应用程序.module中的foo,以及为什么这是一个问题?您可以按以下格式传递任意参数:-p:其中是参数的实际名称。在Application.module中,您可以通过config对象访问它们: var foo : String? = null fun main(args: Array<String>): Unit { foo = "Hello World" io.ktor.server.netty.EngineMain.main(arg

sortedWith()扩展函数中Kotlin的逆变

在Kotlin sortedWith extension中,比较器的方差定义为: public fun <T> Iterable<T>.sortedWith(comparator: Comparator<in T>): List<T> public-fun-Iterable.sortedWith(comparator:comparator):列表 据我所知,这是为了能够使用超级类型的比较器来比较实际类型: val comparator: Co

Kotlin 动态更新FX中的多段线点

这个问题有点简单化了,但我自己无法解决。。。我尝试使用JavaFX时间线来更新多段线点。到目前为止,我得到的信息如下: class MainView : View("Hello TornadoFX") { var myLine: Polyline by singleAssign() val myTimeline = timeline { cycleCount = INDEFINITE } override val root =

如何在Kotlin集合中保持内容的顺序

如何保持内容添加到Kotlin中集合的顺序 python中有 collections.OrderedDict()听起来像是您正在寻找的——“插入顺序是通过维护其所有条目的双链接列表来保留的。”什么集合?有些集合在默认情况下保留顺序,而其他集合不List应保留顺序。另外,您想对它进行排序吗?另外,由mutableMapOf返回的MutableMap被记录下来以保留插入顺序,因为它实际上在后台使用LinkedHashMap。从理论上讲,可以更改它以返回接口的其他实现,但他们不会将其更改为不保持顺序的

Kotlin 从非具体化函数调用具体化函数

我有一个第三方服务,它公开了一个具体化的扩展功能。为了便于测试和封装,我想将此服务包装到一个接口实现对中 问题是我无法在我的应用程序中使用此函数,因为编译器告诉我: Cannot use 'T' as reified type parameter. Use a class instead. 结构如下: interface ThirdPartyService inline fun <reified T> ThirdPartyService.execute(): T interfa

  1    2   3   4   5   6  ... 下一页 最后一页 共 114 页