Lambda-Ausdrücken in java 8 (Null-check in HashMap mit java.util.Optional)

Ich bin neu in java 8 und lernen lambda-Ausdruck.

Habe ich eine Schnittstelle.

Configuration.java

package com.raghu.example;

import java.util.Map;


public interface Configuration {

    public Map<String,String> getPayload();

}

Impl Schnittstelle: ConfigurationImpl.java

package com.raghu.example;

import java.util.HashMap;
import java.util.Map;

public class ConfigurationImpl implements Configuration {

    @Override
    public Map<String, String> getPayload() {
        Map<String,String> map = new HashMap<>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        //return null;
        return map;
    }

}

Mein Main Programm : Sample.java

package com.raghu.example;
import java.util.Optional;

public class Sample {

    Configuration config;

    /*
     * if config is null, return "";
     * if config.getPaylaod is null, return "";
     * if config.payload is not null and if key value is present, then return the value
     * if config.payload is not null and if invalid key, then return "";
     * 
     */

    String test(String key) {
        config = new ConfigurationImpl();
        String dataValue = "";

        /** java 7 
       if (StringUtils.isNotEmpty(key)) {
            try {
                String input= config.getPayload()==null?"":config.getPayloadmap().get(key);
                return (input!=null?input:"");
            } catch (Exception e) {
                return "";
            }
        }
        return "";
    }**/
        Optional.ofNullable(config).map(Configuration::getPayload).ifPresent(v->{final String str=v.get(key);System.out.println(str);});
//       //cdataValue=str;});
//       //Optional.ofNullable(config).map(Configuration::getPayload).ifPresent(v->{final String str=v.get(key);System.out.println(str);return str;});
       return dataValue;
    }

    public static void main(String[] args) {
       Sample s = new Sample();
       String value="";
       value=s.test("key"); //pass invalid , should return "";
       System.out.println(value);
       value=s.test("key1"); //pass invalid , should return actual value
       System.out.println(value);
    }

}

Nun in der Methode test, ich will im folgenden[""].

  1. Prüfen, ob die config ist null, Rückgabe leerer String.
  2. Prüfen, ob die Sammlung ist null, Rückgabe leerer string.
  3. Wenn die Erhebung nicht null ist, und wenn der Schlüssel vorhanden ist, dann den Rückgabewert else return "";

Wie man dies in java 8?

So probiert:

  1. Fehler 1:Void methods cannot return a value

    Optional.ofNullable(config).map(Configuration::getPayload).ifPresent(v->{final String str=v.get(key);System.out.println(str);return str;});
  2. Fehler 2: Lokale variable dataValue definiert, die in einem umschließenden scope muss endgültig sein, oder effektiv final.

    Optional.ofNullable(config).map(Configuration::getPayload).ifPresent(v->{final String str=v.get(key);System.out.println(str);dataValue= str;});

Hinzufügen endgültig nicht lösen.

Veröffentlicht die java-7-code und die ich zu lösen versuche die if-else-Teil von java 7 mit lambda-Ausdruck.

InformationsquelleAutor Raghu | 2015-07-22

Schreibe einen Kommentar