मुझे थोड़ी अलग समस्या थी। फ़ोरच में एक स्थानीय चर को बढ़ाने के बजाय, मुझे स्थानीय चर के लिए एक वस्तु आवंटित करने की आवश्यकता थी।
मैंने इसे एक निजी आंतरिक डोमेन वर्ग को परिभाषित करके हल किया है जो उस सूची को लपेटता है जिसे मैं (देशसूची) से प्राप्त करना चाहता हूं और उस सूची (फाउंडकाउंट्री) से प्राप्त होने की उम्मीद है। तब जावा 8 "फोरएच" का उपयोग करते हुए, मैं सूची फ़ील्ड पर पुनरावृति करता हूं, और जब मुझे इच्छित वस्तु मिलती है, तो मैं उस ऑब्जेक्ट को आउटपुट फ़ील्ड पर असाइन करता हूं। तो यह स्थानीय चर के एक क्षेत्र को एक मान प्रदान करता है, स्थानीय चर को खुद नहीं बदलता है। मेरा मानना है कि चूंकि स्थानीय चर ही नहीं बदला है, इसलिए कंपाइलर शिकायत नहीं करता है। फिर मैं उस मूल्य का उपयोग कर सकता हूं जो मैंने सूची के बाहर आउटपुट फ़ील्ड में कैप्चर किया था।
डोमेन ऑब्जेक्ट:
public class Country {
private int id;
private String countryName;
public Country(int id, String countryName){
this.id = id;
this.countryName = countryName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCountryName() {
return countryName;
}
public void setCountryName(String countryName) {
this.countryName = countryName;
}
}
आवरण वस्तु:
private class CountryFound{
private final List<Country> countryList;
private Country foundCountry;
public CountryFound(List<Country> countryList, Country foundCountry){
this.countryList = countryList;
this.foundCountry = foundCountry;
}
public List<Country> getCountryList() {
return countryList;
}
public void setCountryList(List<Country> countryList) {
this.countryList = countryList;
}
public Country getFoundCountry() {
return foundCountry;
}
public void setFoundCountry(Country foundCountry) {
this.foundCountry = foundCountry;
}
}
Iterate ऑपरेशन:
int id = 5;
CountryFound countryFound = new CountryFound(countryList, null);
countryFound.getCountryList().forEach(c -> {
if(c.getId() == id){
countryFound.setFoundCountry(c);
}
});
System.out.println("Country found: " + countryFound.getFoundCountry().getCountryName());
आप रैपर क्लास विधि "सेटकंट्रीलिस्ट" () को हटा सकते हैं और क्षेत्र को "कंट्रीलिस्ट" फाइनल बना सकते हैं, लेकिन मुझे इन विवरणों को छोड़कर त्रुटि संकलन नहीं मिला।