Replace is Array<T> with .isArrayOf<T>()

This commit is contained in:
Alexey Tsvetkov
2015-10-09 21:22:19 +03:00
parent 01cd277d63
commit 62c25c0370
19 changed files with 114 additions and 44 deletions
@@ -2,7 +2,7 @@ import java.util.Arrays
fun box(): String {
val array = Arrays.asList(2, 3, 9).toTypedArray()
if (array !is Array<Int>) return array.javaClass.toString()
if (!array.isArrayOf<Int>()) return array.javaClass.toString()
val str = Arrays.toString(array)
if (str != "[2, 3, 9]") return str
@@ -0,0 +1,21 @@
import java.util.Arrays
class MyCollection<T>(val delegate: Collection<T>): Collection<T> by delegate
fun box(): String {
val collection = MyCollection(Arrays.asList(2, 3, 9)) as java.util.Collection<*>
val array1 = collection.toArray()
val array2 = collection.toArray(arrayOfNulls<Int>(3) as Array<Int>)
if (!array1.isArrayOf<Any>()) return (array1 as Object).getClass().toString()
if (!array2.isArrayOf<Int>()) return (array2 as Object).getClass().toString()
val s1 = Arrays.toString(array1)
val s2 = Arrays.toString(array2)
if (s1 != "[2, 3, 9]") return "s1 = $s1"
if (s2 != "[2, 3, 9]") return "s2 = $s2"
return "OK"
}
@@ -0,0 +1,36 @@
import java.util.Arrays
class MyCollection<T>(val delegate: Collection<T>): Collection<T> by delegate {
public fun toArray(): Array<Any?> {
val a = arrayOfNulls<Any?>(3)
a[0] = 0
a[1] = 1
a[2] = 2
return a
}
public fun <E> toArray(array: Array<E>): Array<E> {
val asIntArray = array as Array<Int>
asIntArray[0] = 0
asIntArray[1] = 1
asIntArray[2] = 2
return array
}
}
fun box(): String {
val collection = MyCollection(Arrays.asList(2, 3, 9)) as java.util.Collection<*>
val array1 = collection.toArray()
val array2 = collection.toArray(arrayOfNulls<Int>(3) as Array<Int>)
if (!array1.isArrayOf<Any>()) return (array1 as Object).getClass().toString()
if (!array2.isArrayOf<Int>()) return (array2 as Object).getClass().toString()
val s1 = Arrays.toString(array1)
val s2 = Arrays.toString(array2)
if (s1 != "[0, 1, 2]") return "s1 = $s1"
if (s2 != "[0, 1, 2]") return "s2 = $s2"
return "OK"
}