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.
经验分享 程序员 微信小程序 职场和发展