При использовании фреймворка как FastUtils с Scala, как вы создаете соответствующий код на основе эффективной специализации, поскольку сама структура имеет специализированные структуры данных? Я., как вы программным образом определяете, что специализируется и выполняете соответствующий код? Итак, как вы относитесь к типизации, связанной с путями в таких случаях.Как работать и разные контуры кода на основе специализации
objects
Для
class Container[@specialized T](var window: Int) {
val data = new ObjectArrayList[T](window)
}
Для char
Я хочу, чтобы это было:
class Container[@specialized T](var window: Int) {
val data = new CharArrayList(window)
}
Но это должно быть основано на специализации T
. Если я должен поставить это иначе код Судо будет возможно, как
class Container[@specialized T](var window: Int) {
val data = specialisationOf(T) match {
case "Char" => new CharArrayList(window)
case "Int" => new IntegerArrayList(window)
...
...
...
case _ => new ObjectArrayList[T](window)
}
}
Я уже делаю ручную специализацию. Я хочу сделать это с минимальными переопределениями. Спасибо за указатель, но это не решает проблему, с которой я столкнулся. –
Это невозможно в том, как вы писали в своем вопросе, так как разные типы ArrayList не имеют общего супертипа со специализированными методами. В (почти) каждый метод вызывается «данные», вам нужно будет снова выполнить «матч» и применить к самому определенному типу. И это, вероятно, просто заменяет накладные расходы на бокс для накладных расходов вручную. –