Zajmuję się tworzeniem usługi sieciowej REST w Scali przy użyciu implementacji referencyjnej JAX-RS Jersey i otrzymuję dziwny błąd.Problem dotyczący typu Scala (wnioskowania)?
Próbuję utworzyć obiekt ContentDisposition przy użyciu ContentDisposition.ContentDispositionBuilder.
ContentDisposition.ContentDispositionBuilder
ma dwa typy T extends ContentDisposition.ContentDispositionBuilder
i V extends ContentDisposition
. Metoda type
z zwraca wartość instancji konstruktora.
Kodeksu
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).build()
prace jednak
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
produkuje błąd kompilatora
error: value build is not a member of ?0
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
^
(Zauważ, że type
należy umieścić w "cudzysłowie", bo to słowo kluczowe w Scala)
fileName
z ContentDispositionBuilder
zwraca instancję z T
, więc powinno to faktycznie zadziałać.
Nie rozumiem tego. Dowolny pomysł? Używam Scala 2.9.0.1 przy okazji.
Aktualizacja:
To działa. Ale dlaczego tu potrzebuję castingu?
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM)
.fileName("dummy")
.asInstanceOf[ContentDisposition.ContentDispositionBuilder[_,_]]
.build()
Czy to tylko ja czy żaden z linków wydają się działać? – agilesteel
Wygląda na to, że java.net nie działa w tej chwili :-( –
Błąd ma coś wspólnego ze współdziałaniem między symbolami Java a egzystencjalnymi Scala, choć podobne, te dwa typy funkcji systemu nie są takie same. To jest strzał w ciemności , ale warto spróbować z właśnie wydaną wersją Scala 2.9.1. –