maven模块junit-jupiter-api和有什么区别junit-jupiter-engine?是否有必要包含两个依赖项build.gradle?
我是否需要编写两个依赖项
testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
testCompile("org.junit.jupiter:junit-jupiter-api:${junitVersion}")
Run Code Online (Sandbox Code Playgroud)
要么
testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
Run Code Online (Sandbox Code Playgroud)
足够?
我需要添加依赖junit-vintage-engine吗?
我有一个 Kotlin 密封类 -Pet和两个子类 -Dog和Cat. 我的应用程序需要传输以 JSON 序列化的宠物集合。为了区分子类,我使用 Jackson@JsonTypeInfo和@JsonSubTypes注释。清单如下:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes(
JsonSubTypes.Type(value = Dog::class, name = "dog"),
JsonSubTypes.Type(value = Cat::class, name = "cat")
)
sealed class Pet { abstract val name: String }
data class Dog(override val name: String): Pet()
data class Cat(override val name: String): Pet()
Run Code Online (Sandbox Code Playgroud)
单个实例已正确序列化和反序列化:
@Test
fun `serialize dog`() {
val dog = Dog("Kevin")
val dogJson = objectMapper.writeValueAsString(dog)
JsonAssert.assertEquals(dogJson, …Run Code Online (Sandbox Code Playgroud) 我正在寻找带有参数的KotlinJava 流收集器的类似物。Collectors.toMapmergeFunction
例如,在 Java 中为了计算 String 中的字符数,可以使用以下代码片段:
Map<Character, Integer> charsMap = s2.chars()
.mapToObj(c -> (char) c)
.collect(Collectors.toMap(Function.identity(), s -> 1, Integer::sum));
Run Code Online (Sandbox Code Playgroud)
如果我们将 Java 代码片段转换为 Kotlin,由于显式类型的使用,它看起来相当难看。
private fun countCharsV2(word: String): Map<Char, Int> {
return word.chars()
.mapToObj { it.toChar() }
.collect(
Collectors.toMap(
Function.identity(),
Function { 1 },
BinaryOperator { a: Int, b: Int -> Integer.sum(a, b) }
)
)
}
Run Code Online (Sandbox Code Playgroud)
有类似行为的 Kotlin 收集器吗?
下面的代码片段setOfStrings和hashSetOfStrings产生的有什么区别?
val setOfStrings = setOf("A", "B", "C")
val hashSetOfStrings = hashSetOf("A", "B", "C")
Run Code Online (Sandbox Code Playgroud)
它们总是具有相同的类型吗?性能一样吗?
Kotlin 是否有类似于 Java 的^=(异或和赋值)运算符?
例如,在Java中我们可以简单地写
a ^= b
// a = a ^ b
Run Code Online (Sandbox Code Playgroud)
看起来在 Kotlin 中我们需要显式地赋值
a = a xor b
Run Code Online (Sandbox Code Playgroud)
是否可以避免aKotlin 代码中变量的重复?
假设我们有一张地图:
val charToCount = mapOf('a', 3)
Run Code Online (Sandbox Code Playgroud)
任务是3通过相应的键检索值。问题是map.get(...)返回可空类型T?而不是T. 如果可以保证映射中存在键和相应的值,那么将值转换为不可为空类型的最佳实践是!= null什么?
在我的头顶有两种方法:
val count = charToCount['a']!!val count = charToCount['a'] ?: error("...")但两者似乎都不简洁。有没有更好的方法来消除可空类型?