对于一项家庭作业,我必须设置一个变量。给我的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);
}