Java 在Stream.generate().forEach()内找不到方法 System.out.println(GraphController.GRAPHPOOL.peek().getEdge()); Stream.generate(()->{ 试一试{ 返回GraphController.GRAPHPOOL.take(); }捕获(中断异常ie){ 返回“中断!”; } }) .forEach(g->{System.out.println(g.getEdge());} });
我可以打印Java 在Stream.generate().forEach()内找不到方法 System.out.println(GraphController.GRAPHPOOL.peek().getEdge()); Stream.generate(()->{ 试一试{ 返回GraphController.GRAPHPOOL.take(); }捕获(中断异常ie){ 返回“中断!”; } }) .forEach(g->{System.out.println(g.getEdge());} });,java,java-stream,Java,Java Stream,我可以打印getEdge从Stream.generate().forEach()中返回的对象Edge,但是,在forEach中,我只能访问对象g 尝试访问g.getEdge()时,我收到如下错误: 错误:找不到符号 System.out.println(g.getEdge()) symbol:method getEdge() 位置:对象类型的变量g 如何访问g.getEdge()?您必须将g转换为所需的数据类型。如您所知,变量g当前是一个对象。只需使用(needededObjectForgedG
getEdge
从Stream.generate().forEach()
中返回的对象Edge
,但是,在forEach
中,我只能访问对象g
尝试访问g.getEdge()
时,我收到如下错误:
错误:找不到符号
System.out.println(g.getEdge())代码>
symbol:method getEdge()
位置:对象类型的变量g
如何访问g.getEdge()
?您必须将g
转换为所需的数据类型。如您所知,变量g
当前是一个对象
。只需使用(needededObjectForgedGE(g))强制转换即可。getEdge()
您必须将g
强制转换为所需的数据类型。如您所知,变量g
当前是一个对象
。由于调用了GraphController.GRAPHPOOL.take(),只需使用(needededObjectForgedGE(g)).getEdge()对其进行强制转换即可
将不同类型的元素返回到语句return“Interrupted!”
,生成中间方法返回的元素都将是Object
类型,在Object
类中没有名为getEdge()
的方法。要解决此问题,您可以执行以下操作:
.forEach(g -> {
if(g instanceof TheType){
System.out.println(((TheType)g).getEdge());
}
else{
// "interrupted"
}
});
另外,请注意,该方法返回一个无限序列流,通常在这种情况下,您希望利用它来截断流。由于调用GraphController.GRAPHPOOL.take()
将不同类型的元素返回到语句return“Interrupted!”
,生成中间方法返回的元素都将是Object
类型,在Object
类中没有名为getEdge()
的方法。要解决此问题,您可以执行以下操作:
.forEach(g -> {
if(g instanceof TheType){
System.out.println(((TheType)g).getEdge());
}
else{
// "interrupted"
}
});
另外,请注意,该方法返回一个无限序列流,通常在这种情况下,您希望利用它来截断流