对于一项家庭作业,我必须设置一个变量。给我的set方法将其转换为“ Optional”。但是,我必须将此变量存储在不允许可选变量的ArrayList中。如何转换变量使其不再是可选变量?

设置方法:

 public void setParentVertex(IVertex<T> parentVertex)
    {
    if(parentVertex == null)
        this.parentVertex = Optional.empty();
    else
        this.parentVertex = Optional.of(parentVertex);
}


我在尝试使用它的地方:

 ArrayList<IVertex<T>> path = new ArrayList<IVertex<T>>();
 IVertex<T> parent = current.getLabel().getParentVertex();
 path.add(parent);


我不断收到的错误是:“错误:不兼容的类型:可选>无法转换为IVertex”,这是因为我在该行中声明了变量“ parent”。
谢谢。

最佳答案

这是正确的版本

List<IVertex<T>> path = new ArrayList<IVertex<T>>();
current.getLabel().getParentVertex().ifPresent(path::add)


同样最好重写setParentVertex函数:

public void setParentVertex(IVertex<T> parentVertex) {
  this.parentVertex = Optional.ofNullable(parentVertex);
}

07-24 09:20