2017-06-28 4 views
-2

Ich versuche, einen Optional<String> Wert, der von einer Methode zurückgegeben wird, auf eine Setter-Methode einer Modellklasse festzulegen.Wie kann ein optionaler Wert <String> einer String-Variablen zugewiesen oder eingestellt werden?

public class Person{ 

    private String address; 

    public void setAddress(String Address){ 
     address = Address; 
    } 

    public String getAddress(){ 
     return address; 
    } 

} 

das, was ich

ausprobiert
Person person = new Person();  
Optional<String> addr = retrievePersonAddressById(5); 
if (addr.isPresent()) { 
    person.setAddress(addr.get()); 
} 

Aber ich habe

incompatible types: String cannot be converted to Optional<String> 

Hinweis:

retrievePersonAddressById() einen Rückgabetyp Optional<string>.

Der Fehler ist auf der Leitung

person.setAddress(addr.get()); 

Ich brauche Hilfe bitte

+3

ist 'retrievePersonAddressById 'Diese Funktion gibt ein' Optional 'zurück? –

+0

Ja. Ich habe gerade die Post editiert. Sorry – Perry

+0

Randnotiz: Sie können das 'if' überspringen und' addr.ifPresent (person :: setAddress); '. – shmosel

Antwort

2

Wenn der Fehler in dieser Zeile passiert:

Optional<String> addr = retrievePersonAddressById(5); 

Änderung es Optional<String> addr = Optional.of(retrievePersonAddressById(5));

+6

Und schreibe 'if (true) {' anstelle von 'if (addr.isPresent()) {', yeeeeeah! –

+0

Ich habe gerade den Beitrag bearbeitet, um die Dinge zu klären. Entschuldigung für den ersten Post. – Perry

+0

Es scheint mir, als ob es funktionieren sollte –

Verwandte Themen