У меня есть несколько неявных методов для создания универсального столбца таблицы (javafx).Все отлично работает на этой стороне:
trait TableColumnTrait[T] {def createColumn(key: String, displayName: String): TableColumn[PricingRow, T]}
, за которым следуют например.
sealed class PricingStage[PT] extends LoggingTrait {
implicit object TableColumnString extends TableColumnTrait[String] {
override def createColumn(key: String, displayName: String): TableColumn[PricingRow, String] = {
info("createColumn for String (" + key + ", " + displayName + ")")
new TableColumn[PricingRow, String](displayName)
}
}
Однако в PricingStage я хотел бы сохранить созданные столбцы на карте, так что яобъявили это:
var columns = Map[String, TableColumn[PricingRow, TableColumn[PricingRow, PT]]]()
private def createColumn[T: TableColumnTrait](key: String, displayName: String) = {
val column = implicitly[TableColumnTrait[T]].createColumn(key, displayName)
columns += key -> column
pricingTable.getColumns().addAll(column)
}
Но компилятор жалуется:
Описание Resource Path Location Несоответствие типов типов;найдено: javafx.scene.control.TableColumn [org.cobra.client.main.PricingRow, T] обязательно: javafx.scene.control.TableColumn [org.cobra.client.main.PricingRow, javafx.scene.control.TableColumn [org.cobra.client.main.PricingRow, PT]] PricingStage.scala / Cobra / client / org / cobra / client / main line 47 Проблема Scala
Есть идеи?