创建Kotlin对象的新实例

Ada*_*itz 6 kotlin rx-kotlin kotlin-extension kotlin-android-extensions

我有一个对象QuickSort,我试图创建2个实例.当我尝试创建2个单独的实例时,我可以看到它只使用一个实例,因为我在QuickSort类中有一个不准确的计数.Kotlin 在语法中没有使用new,那么我该怎么做呢?

object QuickSort {
      var count = 0;
      quickSortOne(...){
          ...
          count++
          ...
      }
      quickSortTwo(...){
          ...
          count++
          ...
      }
  } 
Run Code Online (Sandbox Code Playgroud)

以下是我尝试创建2个实例的方法.我的目标是让quickSort1quickSort2成为2个独立的实例.

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

var quickSort2 = QuickSort
quickSort2.quickSortTwo(...)
Run Code Online (Sandbox Code Playgroud)

尝试的解决方案:将QuickSort从对象转换为类.这仍然导致使用相同的实例,如第二种方法的计数所示,包括第一次调用计数.

class QuickSort {
      var count = 0;
      quickSortOne(...){
          ...
          count++
          ...
      }
      quickSortTwo(...){
          ...
          count++
          ...
      }
  }
Run Code Online (Sandbox Code Playgroud)

...

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

var quickSortLast = QuickSort()
printTest(quickSortLast.quickSortLast(arrayList, 0, arrayList.size - 1))
Run Code Online (Sandbox Code Playgroud)

Kis*_*kae 8

object是kotlin的单身人士版本.通过使用它,您可以指定只有1个实例由其所有用户共享.

将其转换为a class,您将能够创建单个实例.


Ada*_*itz 2

我弄清楚了我的问题。我将相同的ArrayList传递给quickSortOne()和quickSortTwo()。由于第一个方法修改了 ArrayList,因此第二个方法也会受到影响。