¿Cómo get ResultSet string array?

Tengo una consulta que está golpeando una tabla que tiene una columna de matriz. Cuando estoy procesando mis loggings, me gustaría tomar los datos de la columna de la matriz y tratarla como una matriz de cadenas y get el primer valor. Yo había supuesto que podía hacer lo siguiente:

while (resultSet.next()) { val clients = resultSet.getArray("clients") println(clients[0]) } 

Pero cuando hago esto obtengo el error:

Error: (34, 3) Kotlin: reference no resuelta. Ninguno de los siguientes candidatos es aplicable debido a la discrepancia del tipo de receptor: @InlineOnly funcion en línea del operador publico <@OnlyInputTypes K, V> Map.get (key: Int): ??? definido en kotlin.collections @SinceKotlin operador público divertido MatchGroupCollection.get (name: String): MatchGroup? definido en kotlin.text

getArray devuelve type Array! así que había asumido que podía acceder a los valores por índice. ¿Qué debo hacer para acceder a esta matriz de valores?

En realidad, getArray devuelve un java.sql.Array .

Esto no es lo mismo que el tipo kotlin.Array .

Puede usar getArray en java.sql.Array , que simplemente se traduciría a una array en Kotlin:

 resultSet.getArray("clients").array 

para get la matriz real como un Object / Any .

Puedes lanzarlo a un Array<out Any?> :

 val arr = resultSet.getArray("clients").array as Array<out Any?> 

o al tipo deseado directamente, aunque puede get algunos ClassCastException s como resultado.

Para mantenerse seguro, es posible que desee algo así como

 val firstClient = (resultSet.getArray("clients").array as? Array<out Any?>) ?.filterIsInstance<String>() ?.firstOrNull() 

Esta voluntad:

  • dar como resultado null si la matriz no contiene String
  • dar como resultado null si la matriz está vacía
  • dar como resultado la primera String si la matriz contiene una String
  • Jerarquía de nodo de la list de routes de directory
  • @DataJpaTest y @Async El método CRUDRepository no funciona en set
  • Utilizando el valor inicial de observable en suscripción junto con el mapeado
  • indexOf en Matrices de Kotlin
  • Por qué los numbers que aceptan nulos no son para preservar la identidad
  • La biblioteca de Kotlin 'rxkotlin-0.21.0.jar' tiene un formatting no compatible. Actualice la biblioteca o el complemento
  • ¿Las extensiones de Kotlin para Android almacenan en caching las properties sintéticas o cada vez que llama a findViewById ()?
  • Usando Anko SQLLite, ¿cuál es la mejor manera de verificar si existe una database?
  • Alcance externo de Kotlin
  • Pase la interfaz como parámetro en Kotlin
  • Kotlin Dagger2 no puede encontrar el símbolo ApplicationModule_ProvideApplicationFactory