Crear nueva instancia de object Kotlin

Tengo un object QuickSort que bash crear 2 instancias de. Cuando bash crear 2 instancias separadas, puedo ver que solo está usando una instancia porque tengo un recuento en la class QuickSort que es inexacto. Kotlin no usa nuevos en la syntax, entonces, ¿cómo voy a hacer esto?

object QuickSort { var count = 0; quickSortOne(...){ ... count++ ... } quickSortTwo(...){ ... count++ ... } } 

Así es como estoy intentando crear mis 2 instancias. Mi objective es tener quickSort1 y quickSort2 en 2 instancias separadas.

 var quickSort1 = QuickSort quickSort1.quickSortOne(...) var quickSort2 = QuickSort quickSort2.quickSortTwo(...) 

Intento de solución : conversión de QuickSort de un object a una class. Esto todavía da como resultado que se use la misma instancia como se ve por el conteo del segundo método, incluido el primer recuento de llamadas.

 class QuickSort { var count = 0; quickSortOne(...){ ... count++ ... } quickSortTwo(...){ ... count++ ... } } 

 var quickSortFirst = QuickSort() printTest(quickSortFirst.quickSortFirst(arrayList, 0, arrayList.size - 1)) var quickSortLast = QuickSort() printTest(quickSortLast.quickSortLast(arrayList, 0, arrayList.size - 1)) 

object es la versión de un singleton de kotlin. Al usarlo, especifica que solo habrá 1 instancia compartida por todos sus usuarios.

Conviértalo en una class y podrá crear instancias individuales.

Adam, te pierdes el punto: los object s son singeletones por layout.

Es una de las buenas scala featuras copydas en kotlin.

(En java o C # tienes miembros static feos mezclados con miembros normales de la class).

En cuanto a tu pregunta:

R. No, no puede hacer dos instanse del object kotlin / scala ya que no puede tener dos String diferentes en Java / C #.

B. Simplemente reemplaza object con class (¿y realmente necesitas algo new ? Nunca lo perdí en Python)

Definitivamente desea utilizar una class ya que la palabra key object crea solo la instancia. Puede usar un object complementario dentro de la class para realizar un seguimiento del número de instancias de la class que se crea.

Aquí hay un ejemplo que también intentas aquí

 data class QuickSort(val objectName: String) { init { count++ } companion object { var count = 0 fun printCount() = println("count = $count") } } fun main(args: Array<String>) { QuickSort.printCount() val quickSort1 = QuickSort("qs1") QuickSort.printCount() val quickSort2 = QuickSort("qs2") QuickSort.printCount() // just to prove you have two instances. println(quickSort1) println(quickSort2) println("quickSort1 hashcode = ${quickSort1.hashCode()}, quickSort2 hashcode = ${quickSort2.hashCode()}") } 

que produce:

 count = 0 count = 1 count = 2 QuickSort(objectName=qs1) QuickSort(objectName=qs2) quickSort1 hashcode = 112207, quickSort2 hashcode = 112208 

Descubrí mi problema. Estaba pasando el mismo ArrayList a quickSortOne () y quickSortTwo (). Como ArrayList estaba siendo modificado por el primer método, el segundo método también se estaba viendo afectado.

  • RxAndroid, cómo detectar si observable ha finalizado la emisión
  • Inyectar constructor y object complementario
  • ¿Cómo leer JSON desde Url usando kotlin Android?
  • ¿Cómo puedo agregar de manera condicional una operación asincrónica en medio de una transmisión de RxJava?
  • Comportamiento con Kotlin Higher-Order Functions e interfaces de método único?
  • No se puede cambiar el text de ActionMenuItemView con RxKotlin
  • RxKotlin - Single.just () no se emite al suscribirse TestSubscriber
  • ¿Cómo especificar la versión de RxJava al usar RxKotlin?
  • Múltiples requestes de modificación2 usando Flowable en Kotlin
  • Kotlin con stack RxKotlinFX da un error de class de acceso
  • RxJava- Gire Observable en Iterator, Stream o Sequence