Tag: 数组

二维通用数组提供者

我试图在Kotlin中实现通用的二维数组提供程序: public fun <T> array2dim(sizeOuter: Int, sizeInner: Int): Array<Array<T>> = Array(sizeOuter) { Array(sizeInner) } 但无法弄清楚如何解决这个问题。 编译器说: 类型接口失败:没有足够的信息来推断构造函数中的参数T Array(size:Int,init:(Int)→T)请明确指定。

如何将类型清除列表转换为Kotlin中的数组?

函数toArray应该将类型清除的列表转换为现在是Array<String> T inline fun <reified T> toArray(list: List<*>): T { return list.toTypedArray() as T } toArray<Array<String>>(listOf("a", "b", "c")) // should be arrayOf("a", "b", "c") 但是, toArray会抛出这个错误。 java.lang.ClassCastException:[Ljava.lang.Object; 不能转换为[Ljava.lang.String; 你有什么想法吗?

Array <T?>是什么意思

将Java代码转换为Kotlin时, public MayData[] getDataArray() { return new MayData[0]; } 变成 fun getDataArray(): Array<MyData> { return arrayOfNulls<MyData>(0) } 但我得到一个错误: Error:(50, 16) Type mismatch: inferred type is Array<MyData?> but Array<MyData> was expected 它必须添加'?' fun getDataArray(): Array<MyData?> { return arrayOfNulls<MyData>(0) } “?”是什么? 是指模板类型?

如何通过一个kotlin集合作为varagrs?

乍一看,它只需要将集合转换为数组并将其传递给方法,但这不起作用: val toTypedArray = Arrays.asList("a", "b").toTypedArray() Paths.get("", toTypedArray) // <- compilation error here 没有解决方法?

Kotlin泛型Array <T>导致“不能使用T作为一个实体类型参数。 用类来代替“但是List <T>不是

我有一个接口,包含T和一些元数据的数组(或列表)。 interface DataWithMetadata<T> { val someMetadata: Int fun getData(): Array<T> } 如果我编写接口的最简单的实现,我得到emptyArray()上的编译错误:“不能使用T作为一个实际的类型参数,而是使用一个类。” class ArrayWithMetadata<T>(override val someMetadata: Int): DataWithMetadata<T> { private var myData: Array<T> = emptyArray() override fun getData(): Array<T> { return myData } fun addData(moreData: Array<T>) { this.myData += moreData } } 但是,如果我将接口和实现更改为列表,我没有编译时问题: interface DataWithMetadata<T> { val someMetadata: Int fun getData(): List<T> } class ListWithMetadata<T>(override […]

kotlin:注释中数组的一些问题

我在注释中遇到了一些问题: Entity Table(uniqueConstraints = array(UniqueConstraint(columnNames = array("key", "userid")))) public class … 在这种情况下,我得到以下错误: 类型推断失败。 期望的类型不匹配:找到:kotlin.Array必需:kotlin.String uniqueConstraints = array(…)没有问题,但是Idea在columnNames = array(…)中显示错误 我使用hibernate-jpa-2.1-api-1.0.0.Final.jar 解决方法 :使用组合键(@ javax.persistence.IdClass)来替代uniqueConstraints

Kotlin中的多线程数组初始化

说,我有以下功能,让我创建矩阵: inline fun <reified T> Matrix2D(w: Int, h: Int, init: (Int, Int) -> T) = Array(w){ x -> Array(h){ y -> init(x, y) } } inline fun <reified T> Matrix2D(w: Int, h: Int, value: T) = Array(w){ Array(h){ value } } // For example: val m = Matrix2D(400, 400) { x, y -> Color(x.toDouble() / […]

如何将一个整数数组传递给期望`Array <T>`的方法?

我已经将java shellSort转换为Kotlin。 问题是我不知道要调用这个方法。 Java的 package Sorts; public class ShellSort extends Sorter{ @Override public <T extends Comparable<? super T>> void sort(T[] a) { int h = 1; while((h*3+1) < a.length) h = 3*h+1; while(h > 0){ for(int i = h-1; i < a.length; i++){ T s = a[i]; int j = i; for(j = i; (j>=h) […]

Kotlin:泛型集合到泛型数组

如何从泛型集合中获得泛型数组 ? 我做了以下几件事: val genericArray: Array<E> = (genericCollection as java.util.Collection<E>).toArray() as Array<E> 这是正确的方式还是有一个更优雅的解决方案? 期待您的帮助! 编辑 我最终写了这个帮手扩展: fun <E> Collection<E>.toUntypedArray(): Array<E> { @Suppress("UNCHECKED_CAST") return arrayOf(size, this) as Array<E> } 有没有人有这个问题的更好的解决方案?

从JSON对象kotlin中发送的Byte Array创建文件

我有一个包含字节数组的JSON对象。 该字节数组应该创建一个文件。 我已经在iOS中完成了这个工作,然而,它试图在Android中执行相同的任务,结果文件中的文本是完全不同的。 我已经发现了很多关于将byteArray写入文件的问题和解决方案,到目前为止,尝试了6种方法之后,这是我的解决方案(可能不是我尝试的最好的方法,但是它们都输出相同的文件内容: val bytes: ByteArray = (json["Data"] as JsonArray<Byte>).toByteArray() val bufferedOut = BufferedOutputStream(FileOutputStream(file)) val output = DataOutputStream(bufferedOut) output.write(bytes) output.close() 我已经在工作的iOS版本和这个版本之间比较了byteArray(我知道在我的代码的这个公式中,它是一个Int列表,但它是一个从一个klaxon JsonObject安全地投射的更短的方法),并且它们完美匹配。 然而,它的输出完全不同,在Android中有一堆乱码。 我一直认为编码必须是不同的,但我已经读了一些类似的问题的答案,人们说Java不使用编码,所以我错了? 编辑:在深入比较iOS和Android过程之后,我注意到在iOS中它将数据写入文件,并且数据与Android文档中出现的文本相同。 所以我试图将这些数据转换成DataOutputStream并通过它写入字节(更新的代码)。 在我的脑海中,当我写下它的时候是有道理的,但结果是一样的。 这可能有助于看到“文本”这样的输出: {\ rtf1 \ deff0 {\ fonttbl {\ f0 Calibri;}} {\ colortbl; \ red0 \ green0 \ blue255;} {* \ defchp \ fs22} {\ stylesheet {\ ql […]