javac.exe是java的_编译.java文件时javac.exe会做什么?
在我看来,javac.exe的作用类似于:
.java->blackbox->.class
我正在尝试阅读openJDK,但我不太了解黑匣子的工作过程.因此,我想先分析一些示例,然后再深入研究openJDK.
例如.:
public class Choices {
static class C {}
static class Java{}
public static class Tom {
public void hardChoice(C c) {
System.out.println("Tom choose c");
}
public void hardChoice(Java java) {
System.out.println("Tom choose java");
}
}
public static class Tommy extends Tom {
public void hardChoice(C c) {
System.out.println("Tommy choose c");
}
public void hardChoice(Java java) {
System.out.println("Tommy choose java");
}
}
public static void main(String[] args) {
Tom tom = new Tom();
Tom tommy = new Tommy();
tom.hardChoice(new C()); // mark1
tommy.hardChoice(new Java()); // mark2
}
}
当我将上面的代码放入与mark1和mark2对应的javac.exe中时,我将获得两个带有参数的invokevirtual操作码,以字节码表示:Method Choices $Tom.hardChoice:(LChoice $C;)V和Method Choices $Tom.hardChoice:(LChoice $java;)V.
Q: What processes will the two lines (mark1 and mark2 in java
code) will going through to become two invokevirtual methods
and some related bytecodes.
在我看来,javac.exe的作用类似于: .java->blackbox->.class 我正在尝试阅读openJDK,但我不太了解黑匣子的工作过程.因此,我想先分析一些示例,然后再深入研究openJDK. 例如.: public class Choices { static class C {} static class Java{} public static class Tom { public void hardChoice(C c) { System.out.println("Tom choose c"); } public void hardChoice(Java java) { System.out.println("Tom choose java"); } } public static class Tommy extends Tom { public void hardChoice(C c) { System.out.println("Tommy choose c"); } public void hardChoice(Java java) { System.out.println("Tommy choose java"); } } public static void main(String[] args) { Tom tom = new Tom(); Tom tommy = new Tommy(); tom.hardChoice(new C()); // mark1 tommy.hardChoice(new Java()); // mark2 } } 当我将上面的代码放入与mark1和mark2对应的javac.exe中时,我将获得两个带有参数的invokevirtual操作码,以字节码表示:Method Choices $Tom.hardChoice:(LChoice $C;)V和Method Choices $Tom.hardChoice:(LChoice $java;)V. Q: What processes will the two lines (mark1 and mark2 in java code) will going through to become two invokevirtual methods and some related bytecodes.