Извините за многословным названием :) Вот объект Scala:Доступ из Java-объект Scala, который наследует от общего базового класса Java
object TokenPosition extends java.lang.ThreadLocal[Int]
А вот код Java, который использует его:
TokenPosition$.MODULE$.set(position);
затмение дает мне следующее предупреждение:
тип безопасности: метод
set(Object)
принадлежит к сырому типуThreadLocal
. Ссылки на общий типThreadLocal<T>
следует параметризовать
Что мне делать? Или это неотъемлемое ограничение для Generics и Java/Scala interop?
делает более простой 'TokenPosition.set (position)' не работает? он все еще предупреждает? –
@SteveWaldman Нет, Java-доступ к полям объектов Scala немного сложнее :) – fredoverflow
Я думал, что последние версии Scala предлагают довольно пересылающие методы, см. «Методы пересылки» https://twitter.github.io/scala_school/java.html Вот. Но, видимо, это только с сопутствующими объектами и, вероятно, не для унаследованных членов. Вы можете попробовать добавить «класс TokenPosition;» для пересылки и специализации, «объект TokenPosition extends java.lang.ThreadLocal [Int] {def set (i: Int): Unit = super.set (i); } ' –