Проблема типа (вывода) Scala?

Я разрабатываю веб-сервис REST в Скале с использованием эталонной реализации Jersey JAX-RS и получаю странную ошибку.

Я пытаюсь создать объект ContentDisposition с помощью ContentDisposition.ContentDisposityBuilder .

ContentDisposition.ContentDisposityBuilder имеет два типа T расширяет ContentDisposition.ContentDisposityBuilder и V расширяет ContentDisposition . Метод type объекта ContentDisposition возвращает экземпляр построителя.

Код

val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).build()

работает, однако

val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()

приводит к ошибке компилятора

error: value build is not a member of ?0
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
                                                                                                         ^

(Обратите внимание, что тип должен быть помещен в «кавычки», поскольку это ключевое слово в Scala)

fileName из ContentDisposureBuilder возвращает экземпляр T , поэтому это должно работать.

Я не понимаю этого. Есть идеи? Я использую Scala 2.9.0.1 по пути.

Обновление:

Это работает. Но зачем мне здесь кастинг?

val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM)
  .fileName("dummy")
  .asInstanceOf[ContentDisposition.ContentDispositionBuilder[_,_]]
  .build()

-121--1517269-

Как принудительно включить символы из статической библиотеки в общую библиотеку? Я пытаюсь построить общую библиотеку объектов, которая будет открыта программой с помощью dlopen (). Эта библиотека будет использовать функции, предоставляемые отдельной статической библиотекой. Я включил...

Я пытаюсь построить общую библиотеку объектов, которая будет открыта программой с помощью dlopen (). Эта библиотека будет использовать функции, предоставляемые отдельной статической библиотекой.

Я включил соответствующий флаг на линии связи, чтобы извлечь статическую библиотеку при связывании динамической (например, у меня есть -lfoo для libfoo.a), и компоновщик не жалуется. Однако, когда основная программа вызывает dlopen () в динамической библиотеке, вызов завершается ошибкой с сообщением «undefined symbol», ссылающимся на символ из статической библиотеки.

Running nm означает, что рассматриваемый символ не определен в динамической библиотеке, и основная программа не содержит его, так как я могу заставить компоновщика втянуть этот символ? Сам символ находится в разделе неинициализированных данных (тип символа «B» на выходе nm).

17
задан Cimbali 26 May 2015 в 12:27
поделиться