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.

  • Obtiene N últimos objects emitidos por observables en RxJava2
  • ¿Cómo corotines de Kotlin son mejores que RxKotlin?
  • RxKotlin - Single.just () no se emite al suscribirse TestSubscriber
  • Cómo notificar a Observable cuando finalice CountdownTimer
  • Cómo comprimir algunos observables en lenguaje Kotlin con RxAndroid
  • Obligatorio <Objeto> y encontrado <Objeto>?
  • RxJava - ¿Entradas de keyboard de contrapresión?
  • Inyectar constructor y object complementario
  • RxKotlin - matriz de observadores dynamics
  • Agregar subscribeOn () está cambiando el tipo de retorno de observable
  • Cómo pasar nulo a un Observable con tipo anulable en RxJava 2 y Kotlin