なぜIntelliJのは、私のクラスがnullを返すことはありませんことを教えていますか?

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声明を

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=315357&siteId=1