2016-03-24 7 views
6

मैं जावा 8 सुविधाओं में नया हूं और यह एक बेवकूफ सवाल हो सकता है लेकिन मैं इस बिंदु पर फंस गया हूं।java lambdaj 'variable_name' को एक चर त्रुटि में हल नहीं किया जा सकता

मैं ग्रहण में निम्नलिखित कोड चलाने की कोशिश कर रहा हूं लेकिन यह संकलन समय त्रुटि देता है।

import java.util.ArrayList; 
import java.util.Collection; 
import java.util.List; 
import java.util.function.Predicate; 
import java.util.stream.Stream; 
import ch.lambdaj.Lambda; 

public class LambdajTest { 

    public static void main(String[] args) { 

     List list = new ArrayList(); 
     list.add(1); 
     list.add(3); 
     list.add(8); 
     list.add(10); 
     list.add(16); 

     int sum = list.stream().filter(p -> p > 10).mapToInt(p -> p).sum(); 
    } 

} 

त्रुटि है: - पी को एक चर के लिए हल नहीं किया जा सकता है। मैंने क्लासपाथ में लैम्बडाज 2.3.3 जार जोड़ा है।

कृपया समाधान प्रदान करें। अग्रिम धन्यवाद।

+0

आपको लैम्ब्डा अभिव्यक्ति – ryekayo

+1

में int के रूप में घोषित करने की आवश्यकता है आपके कोड को LambdaJ की आवश्यकता नहीं है। LambdaJ मुख्य रूप से एक पुस्तकालय है जो अच्छी संग्रह विधियां प्रदान करता है और जावा को लक्षित किया जाता है <8. इसका जावा 8 लैम्बडास से कोई लेना देना नहीं है। –

उत्तर

4

समस्या यह है कि JVM को पता नहीं है कि किस प्रकार की ऑब्जेक्ट p है क्योंकि आप कच्चे संग्रह का उपयोग कर रहे हैं।

बदलें

List list = new ArrayList();

को

List<Integer> list = new ArrayList<>();

JVM अब समझता है कि यह Integer वस्तुओं का संग्रह पर स्ट्रीमिंग है।

+0

जो मैंने सोचा था उससे ज्यादा समझ में आता है। – ryekayo

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