我试图在控制台上打印所有的streamex元素,但是我总是遇到这个问题。
one.util.streamex.StreamEx@2e817b38
所以我从主程序中调用“转换”方法,但是我没有工作。你知不知道,我该怎么做?

我希望我的问题能得到有帮助的答案。
发布于 2022-11-12 10:41:33
请张贴你的代码,这是很难读截图。从您的输出来看,您似乎正在从转换方法中打印StreamEx对象。这将不会输出您所需的内容。
当您打印一个java对象时,它会调用所有对象继承的toString()方法。默认情况下,toString()方法将返回一个字符串,该字符串列出类的名称,后面跟着一个@符号,然后是实例化对象分配给的内存位置的十六进制表示形式。
所以你才能得到这样的输出,
one.util.streamex.StreamEx@2e817b38
首先,您需要迭代StreamEx流,然后打印对象。注意,在Racer类中,toString方法被重写。因此,当我们对racer对象调用print时,它将调用我们编写的toString()方法。
import java.util.ArrayList;
import java.util.List;
import one.util.streamex.StreamEx;
class PopupMenuExample {
public static void main(String args[]) {
StreamEx<Racer> racerStream = convert();
System.out.println("this is wrong: " + racerStream);
System.out.println("this is correct: ");
racerStream.forEach(
racer -> {
System.out.println(racer);
}
);
}
private static StreamEx<Racer> convert() {
Racer r1 = new Racer("one", 40);
Racer r2 = new Racer("two", 100);
List<Racer> racers = new ArrayList<>();
racers.add(r1);
racers.add(r2);
return StreamEx.of(racers);
}
}
class Racer {
String name;
Integer speed;
public Racer(String name, Integer speed) {
this.name = name;
this.speed =speed;
}
@Override
public String toString() {
return String.format("{ name:%s, speed: %d }", name, speed);
}
}输出:
这是错误的: one.util.streamex.StreamEx@7229724f
这是正确的:{名称:1,速度: 40 }{名称:2,速度: 100 }
https://stackoverflow.com/questions/74411834
复制相似问题