2014-05-23 14 views
7

जबकि जावा 8 का प्रकार अनुमान काफी सुधार हुआ है, मैंने एक संभावित सीमा पर मारा है और मुझे यकीन नहीं है कि कुछ कामकाज है जो मुझे याद आ रही है। परिदृश्य:लैम्ब्डा अभिव्यक्तियों के साथ अनुमान सीमाएं टाइप करें

class Foo<T> { 
    <U> void apply(Function<T, Consumer<U>> bar) {} 
} 

class Bar { 
    void setBar(String bar){} 
} 

Foo<Bar> foo = new Foo<>(); 

यह काम करता है:

foo.<String>apply(bar -> bar::setBar); 

यह नहीं करता है:

foo.apply(bar -> bar::setBar); 

वहाँ किसी भी तरह से प्रकार निष्कर्ष स्थिति इस तरह की में काम करने के लिए प्राप्त करने के लिए है?

+0

यह सबसे निश्चित रूप से, एक बग के बजाय एक सीमा है, क्योंकि संकलक सब कुछ यह दोनों ही मामलों में की जरूरत है पता है। लेकिन जावा इतिहास दिया गया, मुझे लगता है कि यह जावा 9 (5-10 वर्षों में) –

+0

तक तय नहीं रहेगा, मुझे नहीं पता कि यह तकनीकी रूप से एक बग है - मुझे जेएलएस से कड़ी मेहनत करनी पड़ी अगर उसे इसमें अनुमान लगाना चाहिए मामला या नहीं। मुझे यह जानना अच्छा लगेगा कि क्या कुछ और है जो मैं काम करने के लिए कर सकता हूं। –

+2

क्या आप एक आईडीई का उपयोग कर रहे हैं? क्योंकि यह ग्रहण में संकलित नहीं है लेकिन मेरे लिए जावैक के साथ करता है। –

उत्तर

6

यह एक ग्रहण बग है। दोनों Netbeans या javac के साथ ठीक संकलन।

ऐसा लगता है ग्रहण quite कुछ issues जावा 8 के साथ है ...

+0

सबक सीखा - अगर ग्रहण अजीब है, तो हमेशा जावैक के साथ परीक्षण करें। –

+1

@ जोशस्टोन ... और इसके विपरीत। ऐसे मामले हैं जहां यह सिर्फ दूसरी तरफ है ... – Marco13

संबंधित मुद्दे