Sahand:
private void addCompoundsFrom(Verse verse) {
Optional<List<Compound>> compounds = Optional.of(verse.getCompounds());
if (compounds.isPresent()) {
for (Compound compound : compounds.get()) {
addCompoundsFrom(compound);
}
}
}
IntelliJのインスペクタには、if文は常に真であることを私に伝えます。それはそれをどのように知ることができますか?これは、化合物のクラスであります:
public class Compounds extends PositionalIds {
@XmlElement(name = "verse")
private List<Verse> verses;
public List<Verse> getVerses() {
return verses;
}
}
@XmlTransient
public abstract class PositionalIds {
@XmlAttribute(name = "start")
private String startId;
@XmlAttribute(name = "end")
private String endId;
public String getStartId() {
return startId;
}
public String getEndId() {
return endId;
}
}
そして詩のクラス:
public class Verse extends PositionalIds {
@XmlElement(name = "compound")
private List<Compound> compounds;
@XmlAttribute(name = "notation")
private String notation;
public List<Compound> getCompounds() {
return compounds;
}
public String getNotation() {
return notation;
}
}
私が使用して停止した場合Optional
ラップするverse.getCompounds()
だけのnullチェックを行う結果を、代わりに、検査メッセージが表示されなくなります。
私は、Java 8を使用しています。
Svetlin Zarev:
Optional
クラスには二つの方法があります。
Optional.of
- パラメータがある場合>は例外をスローしますnull
Optional.ofNullable
- パラメータがある場合>空のオプションを作成しますnull
したがって、あなたのメソッドの戻りがnullの場合、of()
メソッドは例外をスローしますと、空のオプションは、あなた到達することはありませんif
声明を