在Kotlin中编辑不可变的列表的最佳方法是什么
我知道List实际上并不是不可变的,但是如果我将List传递到一个函数中,并且我需要整个列表减去一个元素,有没有支持的方法来处理这个问题?如果我希望整个列表包含一个额外的元素,那该怎么办?如果您处理的是不可变列表,那么您要做的就是创建新列表。因此,在您的情况下,如果您想要一个没有元素的列表,那么就过滤掉该元素(在Kotlin中,您可以使用filter函数)并返回新列表。如果您自己创建列表,而不是调用listOf(“foo”,“bar”)调用可变列
如果我有一个字符串,比如“mypackage.MyClass”,我如何在运行时(从JVM)获取相应的KClass。您可以使用Java的方法获取类实例类.forName,然后使用.kotlin扩展属性将其转换为KClass。代码如下所示:
val kClass = Class.forName("mypackage.MyClass").kotlin
在某些情况下,可能会添加更直接的方法。该问题位于请注意,这不适用于原始类型,如char。它也不适用于自动转换的类型,如java.util.List、k
我正在使用Spek测试我的Kotlin应用程序。我想在Jenkins构建之后发布我的测试报告。JUnit或TestNG将生成XML报告,Jenkins可以使用该报告生成测试统计数据
Spek是否生成这样的报告?如果是这样,如何配置我的Gradle项目来获得它?如果没有,其他可用的报告选项是什么?在CI构建之后,我目前正在使用与集成我的(多模块)项目,因此我可能会对单模块(我已调整)构建有一些小错误,但这是我研究的一部分
您需要做的第一件事是配置build.gradle,以便让您的测试正常工作,即
我只是一个编程初学者,从今天开始学习Kotlin。我得到了这个错误
fun main(args: Array<String>) {
val (two, three) = nextTwo(1) // Unresolved reference: nextTwo
println("1, $two, $three")
fun nextTwo(num: Int) : Pair<Int, Int> {
return Pair(num+1,
假设我在Kotlin中有一个字符串列表:stringList:MutableList
然后,通过执行以下操作,可以很容易地按不区分大小写的顺序对此类列表进行排序:
stringList.sortWith(String.CASE_INSENSITIVE_ORDER)
但是我如何按照不区分大小写的顺序对对象列表进行排序呢?例如:places:MutableList
其中Place是一个简单的类,有两个字段-name:String和id:Int,我想按name字段对这些位置进行排序
我尝试过这样做:
我是Kotlin的新手,来自JS。我目前正在制作一个计算器应用程序,正在使用“%”运算符。我需要知道“当前输入*0.01”的输出是整数还是小数点。通常,我会使用
num % 1 !== 0
但它在Kotlin中不起作用,并给我错误“!=运算符不能应用于Double或Int”。字符串或字符也是如此。下面是我的Kotlin代码,希望有人能帮助我!谢谢
val percentResult: Double() = result.toDouble() * 0.01
if(percentResult
从Kotlin Koan问题(
),我有这个密码。我怎么读这个?它看起来像一个带有val的变量,但它是一个带有()和{}的函数
val Customer.orderedProducts: Set<Product> get() {
// Return all products this customer has ordered
todoCollectionTask()
}
val Customer.orderedProducts:Set get(){
//退回此客户订
我不理解如何为`ByteArray.getOrElse()函数指定默认值
我试过:
myInt = dat.getOrElse(0, 0).toInt()
但编译器抱怨出现以下错误:
The integer literal does not conform to the expected type (Int) -> Byte
如何指定默认值?第二个参数是函数文本
myInt = dat.getOrElse(100, { /** what is there is no element 1
标签: Kotlin
timeoutokhttpkotlin-android-extensions
我看到了`
但是这是Java(Android)语言的链接。我想使用kotlin语言。。。
`
我正在使用OkHttp库
val client = OkHttpClient()
val time = client.connectTimeoutMillis() // it's get only methood but i looking for method for set Timeout
我的问题是我找不到如何设置Kotlin的连接超时和套接字超时。需要一个Builder,没有可用的设置
EnumClass.values()如何在Kotlin中工作
我的意思是,它是否每次都会创建新的数组,或者它是静态的,或者其他什么?虽然不是100%确定,但我假设在Kotlin(以及Java)中Enum.values()方法是由编译器生成的:
编译器在创建时会自动添加一些特殊方法
枚举。例如,它们有一个静态值方法,该方法返回
按顺序包含枚举的所有值的数组
宣布。此方法通常与
为每个构造迭代枚举类型的值
从:
此方法每次都返回新数组
关键是在Java中数组不能是常量:它的值可以修改,因此您不能共
有一个符合以下场景的流程。
发起方:甲方
响应方:PartyB
事务1:输入状态A-ContractA导致输出状态B-ContractA。参与者是PartyA和PartyB
事务2:输入状态B-ContractA,无输出。参与者是PartyA和PartyB
在科尔达这可能吗?请分享一个有回应的例子。谢谢。是的,这是可能的。请查找链接了解更多信息
听起来您收到了两条不同的错误消息:
如果不尝试启动第二个流会话来获取第二个签名,则会得到如下结果:
net.corda.core.flows.unex
我通过选中AndroidStudio 3中的“IncludeKotlin”框创建了一个新项目,在编译时出现了一个错误
"Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7..."
我已经确保所有插件都是最新的,并且安卓SDK安装正确
如何解决此错误?kotlin stdlib jre[7/8]不久前已被弃用,并已被删除。弃用说明一直保存到,这是发布这些工件的最后一个版本。可以找到官方的弃用通知。使用任何不推荐的版本(在删除之前)
我有一个Mono,当otherMono为空时,我想修改它
第一个Mono:
deviceRepository.getDevice(deviceId, userId): Mono<Device>
registrationRepository.canRegister(deviceId) : Mono<DeviceRegistrationInfo>
我想要实现的是,当canRegister为给定的deviceId返回空的Mono时,返回修改的Mono:
device.cop
我是kotlin的新手,我正在尝试创建这种java环境:
protected String aVariable;
public setAVariable(String aValue){
aVariable = aValue;
}
如果我试图用不同的修饰符指定setter,我会得到一个错误。我也试过:
protected var aVariable: String? = null
fun setAVariable(value: String?){
aVariable = va
我有一个骆驼路由,它从S3读取文件,并按如下方式处理输入文件:
使用
按body()拆分输出
按主体属性(.sement)和批大小2进行聚合
调用持久性服务以在给定的批中上载到DB
问题是,当批大小为2且记录数为奇数时,总有一条记录无法保存
提供的代码与等价的Java代码(除了“\${simple expression}”前面的斜杠或没有分号来终止语句)没有太大区别
如果我将批大小设置为1,则会保存每条记录,否则最后一条记录将永远不会保存
我已经检查了几次文档,但它似乎没有涵盖这个特定场景
除了
Kotlin的新手,我看到了以下代码:
val myModule : Module = module {
viewModel { MyViewModel(get()) }
single { MyRepository() }
}
查看Kotlin文档,我不清楚“模块”后面的大括号是什么意思。模块是否为函数,大括号用于初始化函数?如果这是真的,你能告诉我Kotlin文档中指出这一点的部分吗?我在文档中找不到任何显示此示例的内容。以下是链接:
大括号表示模块函数接收lambda作为参数 大
我有一个命令行应用程序,可以执行一些异步任务:
class Main {
companion object {
@JvmStatic
fun main(args: Array<String>) {
GlobalScope.run {
launch {
FetchMovies().execute(7)
}
标签: Kotlin
android-roomandroid-architecture-componentsandroid-livedata
我正在制作一个应用程序来更新当前列表。实现是使用room和livedata完成的,我使用的是没有viewmodel的mvp模式。我的问题是,如果我有一个返回所选类别中所有项目的查询,并且我在livedata上已经有了一个可观察项,那么我可以用不同的查询参数更改dao函数并相应地更新列表吗。我发现最接近它的是:
但由于我对开发比较陌生,目前正在探索android中的反应模式,这已经证明是一个相当大的挑战
在演讲者中
override var itemsList: LiveData<List
在文件夹src/resources/I中的我的Kotlin项目中有文件对\u ids.txt
此处代码:
这是一个属性文件:
key=value
所有行的计数均1389
这里是逐行读取此文件内容的代码
import org.slf4j.LoggerFactory
private val logger = LoggerFactory.getLogger("Exchange")
private var allSymbolsIDsMap: Map<String, String> =
我们可以提供一个可选的CoroutineContext,同时从构建器函数创建coroutine,如下面的launch
launch(Dispatchers.Unconfined) { // not confined -- will work with main thread
println("Unconfined : I'm working in thread ${Thread.currentThread().name}")
delay(500)
println
在Corda中,向状态添加新属性(状态演化)要求新属性可以为空,以便与状态的以前版本保持向后兼容
data class Version1DummyState(
override val participants: List<AbstractParty>
) : ContractState
data class Version2DummyState(
override val participants: List<AbstractParty>,
v
标签: Kotlin
nullablesimplifysimplification
我是Kotlin的新手,我想知道简化以下方法的最佳方法
如果金额由X个人支付,则我需要返回应付金额,否则我需要返回0
在下面的代码中,付款是一个可为空的对象。它包含retailAmount,这也是一个可为空的对象retailAmount包含基本费用,该费用为双倍。(如果付款或零售金额为空,我需要返回0)
您可以执行以下操作:
fun getChargesPayableByX(personX: String): Double =
areChargesPayableByX(personX)
我的ide说,“规范”已被弃用。Java中已弃用。我应该使用什么替代
import org.springframework.data.jpa.domain.Specifications
fun hasName(name: String?): Specifications<User>? = name?.let{User::name.equal(it) }
import org.springframework.data.jpa.domain.Specifications
fun ha
我在Kotlin代码中使用java enum io.confluent.kafka.schemaregistry.avro.AvroCompatibilityLevel
public enum AvroCompatibilityLevel {
NONE("NONE", AvroCompatibilityChecker.NO_OP_CHECKER),
// ...
public final String name;
public final AvroCompatibili
标签: Kotlin
shared-librariesinteropkotlin-native
是否有相对简单的方法将Kotlin/本机动态库加载到Kotlin/JVM中。我的案例的一些细节:我有一些Kotlin/JVM接口,例如IGenerator:
interface IGenerator {
fun generate(): ByteArray
}
出于性能考虑,我想使用本机代码实现这个接口。如果没有Kotlin/Native,我将编写一个C/C++代码,然后将其编译到共享库中,并使用例如SWIG()构建一个JVM包装器。这个工具为我的共享库生成JNI包装,加载到我的Kotli
假设我们有这个类:
class Test(@SerializedName("Nullablefield")
val nullable: Int?,
@SerializedName("NonNullableField")
val nonNullable: Int)
我们收到了这个json:
{
"Nullablefield": 3
}
如您所见,json中缺少NonNullableField
使用Gson
我的目标是通过一组固定的属性和方法(其名称不会重叠)从现有库扩展多个类
直接的解决方案是简单的继承:派生库类并添加属性/方法。但这将是相当重复的,因为所有派生类的属性和方法都是相同的。最好创建一个包含我需要的所有属性和方法的辅助类,并简单地从库类和辅助类派生扩展类
但是,在Kotlin中,没有类似于C++的多重继承,我希望使用接口使其工作,其中接口将包含我需要的所有属性和方法。
我从以下简单的代码开始测试接口:
open class LibraryClass{
var x: Int =
我用camel和cxf创建了webservice。
我的bean设置:
@Bean
open fun cxfServlet(): ServletRegistrationBean<CXFServlet> {
val servlet = ServletRegistrationBean(CXFServlet(), "/ws/*")
servlet.setLoadOnStartup(1)
servlet.setName("cxfServlet")
return
因此,我试图在我的Kotlin/Native项目中使用stb_映像,但在尝试将其包括在我的项目中时遇到了困难。这是一个只包含头的库,konan似乎希望得到一个编译过的对象文件,所以我想知道是否有任何方法可以生成CSTUB,然后使用头进行链接,除非我必须编译一个基本的翻译文件,因为stb_image只需要你有一个定义STB\u IMAGE\u实现但是我在编译器pts-GSTB\u IMAGE\u实现中定义了它。只是编译一个翻译单元,创建静态对象,然后链接到它会更容易吗?还是K/N有办法帮我做到这一
我使用暴露的无DAO的咖啡因缓存。
常用的用法是
transaction {
val row = rowService.getById(1)!!
}
RowService首先尝试在缓存中查找行,如果为负数,则对数据库运行查询。我怀疑即使没有任何查询,事务块也会有一些开销,如果我在大部分时间缓存命中,我想将事务块移动到RowService中,它在其中解析数据库中的数据,但是我不想在此过程中创建嵌套的事务
如何检查我是否已经在事务块中并重新使用它,或者打开新的事务块并运行fetch语句和
我有一个对象数组(称为Image的对象),我想在数组中找到符合特定条件的对象索引。相反,我当前的代码返回对象本身,而不是数组中的索引:
val originalImage = imagesArray.find {it.position == 2}
我的图像类:
data class Image (
val position: Int? = 0,
val coor: IntArray = intArrayOf(0, 0)
) {
override fun equals(o
在Kotlin中的某些情况下,编译器会抱怨定义为的泛型类型参数,并期望。区别是什么?区别在于普通的表示它可以为空。(由Any?表示)。使用将T限制为不可为空的类型
所以区别在于是一个隐式我只是好奇T是隐式可空的。Null是否也扩展了任何类?谢谢。我在任何地方都找不到这方面的参考资料。因此,我一直认为它将与Java中的Object相同,因为Object对应于Any?而不是Any。与Java相反,“Kotlin支持可空类型”的说法是不正确的。它支持的是不可为null的类型。我还要补充一点,说意味着它
我们通常将@author和@since标记放在顶级类的javadoc/kdoc注释中
但是,如果一个kotlin文件没有任何类或对象,而不是顶级函数,那么是否有合适的位置来放置@author和@since标记?如上所述,您可以将它们放置在顶级函数的元素上。但是,如果您想记录模块/包,则需要创建一个单独的标记文件。请参阅链接文档页面的最后一节
我正在看Kotlin fold函数的文档,在理解正在发生的事情时有点困难。他们提供的示例如下:
val fruits = listOf("apple", "apricot", "banana", "blueberry", "cherry", "coconut")
// collect only even length Strings
val evenFruits = fruits.groupingBy { it.first() }
.fold(listOf<String>(
我已经使用Kotlin一段时间了,但我刚刚发现,当我想对字符数组使用spread运算符并将其传递给split函数时,它不起作用
fun main(){
val strings=arrayOf(“一”、“二”)
val stringSplit=”“.split(“一”、“二”)
val stringsSplit=“.split(*字符串)
val chars=arrayOf('1','2')
val charSplit=”“.split('1','2')
val charsSplit=“.spli
标签: Kotlin
openapiopenapi-generator
我试图用OpenApi生成器生成请求,但忽略了所有约束,如min、minvalue、maxlength等。例如:
data class SomeClassNameGen (
@JsonProperty("queryText") val queryText: kotlin.String,
@JsonProperty("test") val test: kotlin.Int? = null
}
来自openapi.yaml的代码
SomeClassName:
我有一个服务器返回一个值(JSON格式),其中包含一个带小数位的数字,例如203.14
因为在我的应用程序中,我需要进行一些计算,所以我必须将其转换为Double
但是,当转换为Double时,其值变为203.13999938964844
出于某些业务逻辑原因,当我显示该值时,我需要将该数字四舍五入到小数点后2位
现在它变成了203.13,比服务器返回的值小0.01
当我将“203.14”转换为双精度时,如何保留203.14
更新:
我刚刚发现原因是模型类使用了float来接受服务器值,但后来转
我想在一段时间后用RxJava发出项目。
我提供了一些伪代码来说明我想要什么
class Segment(
val startTime: Int,
val duration: Int
)
fun main() {
val segments = listOf(
Segment(0, 1500),
Segment(1500, 3000),
Segment(4500, 450)
)
Observable
标签: Kotlin
project-reactorarrow-kt
你能把这种被动的方法转换成一种有效的方法吗
更新
根据El Paco的回答,我将代码修改为:
return FluxK.monad().fx.monad {
val client = !clientRepository.findById(clientId).toFlux().k()
if (client != null) {
!applicationRepository.findByProjectId
标签: Kotlin
foreign-keysandroid-roomone-to-one
我有一个名为User的表。此表有两个外键Account和Shop(都是1..1关系)。
所以我创建了一个名为UserAndAccount的数据类和另一个名为UserAndShop的数据类
我现在如何获取所有这些数据(将等于UserAndAccountAndShop)
User.kt
@Entity(
tableName = "User"
)
data class User(
@PrimaryKey(autoGenerate = false)
@Ser
标签: Kotlin
kotlinx.serializationsealed-class
还不确定这是否可能,但就我个人而言,我不知道如何将其序列化
sealed class ServiceResult<out T : Any> {
data class Success<out T : Any>(val data: T) : ServiceResult<T>()
data class Error(val exception: Exception) : ServiceResult<Nothing>()
}
密封类服务结果
我正在尝试创建一个支持JPA的Micronaut函数应用程序
build.gradle.kts
plugins {
id("org.jetbrains.kotlin.jvm") version "1.4.10"
id("org.jetbrains.kotlin.kapt") version "1.4.10"
id("org.jetbrains.kotlin.plugin.allope
鉴于此(极其简化的)代码:
我可以打电话
val m1 = MigrationStatus.token.modify(m) { "some token" }
但是,由于参数类型是不可为null的字符串,如何将标记修改回null?当然
val m2 = MigrationStatus.token.modify(m1) { null }
不编译
当尝试将标记类型更改为选项并将其设置为无时,也会发生同样的情况,但我现在避免了它(我不确定我是否喜欢,但那是另一回事)
我错过了一些
我有一个愚蠢的问题让我有点吃惊。
我有一个枚举和一个数据类,如下所示:
enum class MyEventType(val typeName: String) {
FIRST("firstEventReceived")
}
data class MyEvent(
val id: String,
val event: MyEventType
)
我需要将其作为json字符串发送,但common Desearizer会生成这样的json
{
标签: Kotlin
retrofitandroid-workmanager
我正在使用Kotlin workmanager上传文件。在CoroutineWorkmanager中,我使用挂起上载功能进行文件上载。我想观察改造的进展,并显示在用户界面上。我可以看到改装进度状态,但无法在workManager中观察到
我的请求主体类,其中我可以看到改装进度状态:
class ProgressRequestBody : RequestBody {
val mFile: File
val ignoreFirstNumberOfWriteToCalls : Int
根据kotest文件:
您可以告诉最终忽略特定的异常,其他任何异常都会立即导致测试失败
我希望将多个异常传递给我知道将由我的块抛出的最终异常,以便我可以显式地跳过它们
现在我只看到了传递一个异常的方法,如何将多个异常传递给最终,以在块抛出这些异常时跳过它?您可以对所有异常使用超类,如
eventually(200.milliseconds, exceptionClass = RuntimeException::class) {
throw IllegalStateException()
}
假设这是Kotlin代码
接口命令
接口命令1:命令
接口命令2:命令
接口顺序
类对象:命令1、命令2、命令
然后,对于上面的代码,输出应该是Command1和Command2,因为我只想要某个类型的结果,在本例中是Command。因此,订单不应作为输出。代码:
Command1
Command2
fun main(){
Obj().javaClass.interfaces.filter{Command::class.java.isAssignableFrom(it)}.forEach{p
我有一个asynccoroutine,它可能会引发异常。如何将异常传播到我的CoroutineExceptionHandler?使用try/catcharoundawait我能够捕获异常,但我似乎无法将处理传播到处理程序,无论上下文如何:
val handler = CoroutineExceptionHandler { _, e -> e.printStackTrace() }
val context = Executors.newSingleThreadExecutor().asCor
我有以下代码设置
abstract class GenericQuestionEditor() {
protected abstract var data: GenericQuestionData
}
但是,当我创建EditorSimple()时,当我试图将数据设置为DataSimple()时,它会抛出一个错误,为什么
class EditorSimple(): GenericQuestionEditor() {
override var data = DataSimple()
我只是想模仿一个简单的登录过程
如何为if-else语句编写多个条件
e、 g.如果条件1和条件2正确,则
我试过使用和,,&和+
提前感谢在多次尝试后找到了答案:
if (userIDread == userID1 && userpassread == userpass){
println("access granted")
通常,检查语言文档中的这些基本功能是一个好主意。下面是布尔运算符的示例
布尔运算的内置操作包括:
||–析取逻辑或
1 2 3 4 5 6 ...
下一页 最后一页 共 204 页