2011-08-31 17 views
7

मैं Jersey जेएक्स-आरएस संदर्भ कार्यान्वयन का उपयोग कर स्कैला में एक आरईएसटी webservice विकसित कर रहा हूं और मुझे एक अजीब त्रुटि मिल रही है।स्कैला प्रकार (अनुमान) मुद्दा?

मैं ContentDisposition.ContentDispositionBuilder का उपयोग कर ContentDisposition ऑब्जेक्ट बनाने की कोशिश कर रहा हूं।

ContentDisposition.ContentDispositionBuilder में दो प्रकार T extends ContentDisposition.ContentDispositionBuilder और V extends ContentDisposition हैं। 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() 
                             ^

(ध्यान दें कि type जरूरतों "उद्धरण चिह्नों" में रखा जाना है क्योंकि यह एक कीवर्ड है स्कैला में)

fileNameContentDispositionBuilderT का एक उदाहरण देता है, इसलिए यह वास्तव में काम करना चाहिए।

मुझे यह नहीं मिला। कोई उपाय? मैं रास्ते से स्कैला 2.9.0.1 का उपयोग कर रहा हूं।

अद्यतन:

यह काम करता है। लेकिन मुझे यहां कास्टिंग की आवश्यकता क्यों है?

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

यह सिर्फ मुझे है या आपके लिंक से कोई भी काम करने लगते हैं? – agilesteel

+0

ऐसा लगता है कि java.net इस समय नीचे है :-( –

+1

त्रुटि में जावा वाइल्डकार्ड और स्कैला अस्तित्व के बीच इंटरऑप के साथ कुछ करना है। हालांकि, इन दो प्रकार की सिस्टम विशेषताएं समान नहीं हैं। यह अंधेरे में एक शॉट है , लेकिन यह अभी जारी किए गए स्कैला 2.9.1 के साथ प्रयास करने लायक हो सकता है। –

उत्तर

2

मुझे लगता है कि प्रकार निष्कर्ष केवल एक सीमा तक कर सकते हैं किसी भी डाले करने के लिए बिना ... आप शायद दो पंक्तियों में कर सकते हैं,; क्या आपने यह कोशिश की है?

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

या शायद

val builder=ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy") 
val contentDisposition=builder.build() 
संबंधित मुद्दे