sau*_*mar 1 java decompiling .class-file
class p {
p(){
System.out.println("1");
}
}
class Student extends p{
Student() {
super();
System.out.println("2");
}
public static void main(String[] args) {
Student s = new Student();
}
}
Run Code Online (Sandbox Code Playgroud)
因为我已经明确地提供了super(),但在使用jd-gui进行反编译之后,我无法看到我放置的super(),因为super()应该由编译器本身提供.我只是想看看这个,super关键字和其他东西是由编译器隐式提供的.我用Google搜索并发现.class文件我可以用jd-gui看到,但是我无法看到super()和this(),有没有其他相同的方法?
在Java中,任何不以显式super(...)
或this(...)
链式构造函数调用开头的构造函数都会自动获取(等效的字节码)super();
作为编译器的第一条指令.因此,当反编译器super()
在构造函数的开头看到字节码时,它无法知道原始源代码super()
是否包含显式或者编译器是否隐式插入了指令.两个版本都编译为相同的字节码,因此没有特别的理由让它优先于另一个.
归档时间: |
|
查看次数: |
319 次 |
最近记录: |