W ostatnim czasie napotkałem problem podczas rozwijania aplikacji Spring Security. Posiada interfejs GrantedAuthority
z następującym podpisem:Implementowanie niebezpiecznych interfejsów Java
public interface GrantedAuthority extends Serializable, Comparable
A co do Java 1.5 i później, interfejs Comparable
przyjmuje parametr typu T
, która została pominięta w bibliotekach Wiosna nad Bezpieczeństwem (oczywiście dla JVM 1.4 kompatybilności).
Tak więc próbuję wprowadzić GrantedAuthority
w Scala.
class Role extends GrantedAuthority {
. . .
def compareTo(obj: Any): Int = obj match {
case (r: Role) => r.toString.compareTo(this.toString)
case _ => -1
}
}
To nie kompiluje:
error: class Role needs to be abstract, since method compareTo in trait Comparable of type (T)Int is not defined
Jak mogę wdrożyć taki interfejs w Scala?
Brzmi nieodłącznie od surowych typów: https://lampsvn.epfl.ch/trac/scala/ticket/2970#comment:3 – retronym
Dzięki, retronym. Tak więc ostateczna odpowiedź brzmi: "wontfix"? – incarnate