今天阅读spring boot源码发现一句:
RuntimeException().getStackTrace();
作用是推断出当前执行流中的某个类。可以发现获取的值都是调用栈的方法名。本地测试了一下,代码如下:
public static void main(String[] args) throws Exception{
StackTraceElement[] stackTrace = new RuntimeException().getStackTrace();
Student student = new Student();
student.buyMac(123123);
}
public class Student implements Person {
private final static int nextId = 1;
private int id;
@Override
public void buyMac(double money){
StackTraceElement[] stackTrace = new RuntimeException().getStackTrace();
System.out.println("学生买了mac");
System.out.println("学生花了"+money);
}
@Override
public void takeSubWay(double money){
System.out.println("学生花"+money+"坐车回家");
}
@Override
public void atHome(){
System.out.println("到家");
}
public void setId(){
id = nextId;
//nextId++;
}
public int getId() {
return id;
}
public static int getNextId() {
return nextId;
}
}
public interface Person {
public void buyMac(double money);
public void takeSubWay(double money);
public void atHome();
}
可以看到返回值如下:
本来想再深入写一点,但是觉得花时间多了反而容易使自己迷糊,所以就这样了吧。有兴趣的可以留言,一起探讨下。