我在StackFrames
上使用walk
方法获得了StackFrameStream
的列表。
但是我只需要找到前3个stackFrames。
我有StackFrameStream
List<StackFrame> stackFrameList =
StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE).walk(stackFrameStream -> stackFrameStream.collect(Collectors.toList()));
System.out.println("All frames : \n" + stackFrameList.toString());
for (StackFrame stackFrame : stackFrameList) {
System.out.println("stackFrame.getDeclaringClass()=>" + stackFrame.getDeclaringClass().toString());
System.out.println("stackFrame.getLineNumber=>" + stackFrame.getLineNumber());
System.out.println("stackFrame.getMethodName=>" + stackFrame.getMethodName());
System.out.println();
}
我不想使用
stackFrameStream.collect(Collectors.toList())
并获取整个stackFrames列表,我只想要前三个要素
最佳答案
使用limit
截断:
StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE)
.walk(stackFrameStream -> stackFrameStream.limit(3).collect(Collectors.toList()));