📅  最后修改于: 2023-12-03 14:42:20.900000             🧑  作者: Mango
Java.lang.Compiler是Java编译器的核心类之一,它提供了Java语言编译器的许多底层方法,可以用于编译Java程序。
Java.lang.Compiler类位于java.lang包中,是一个final类,没有公共构造方法,因此不能创建其实例。
该类提供了以下方法:
|方法|描述| |----|----| |public static Object command(Object)|执行特定编译命令。 | |public static boolean compileClass(Class)|对指定的类进行即时编译。 | |public static boolean compileClasses(String)|对一组类进行即时编译。 | |public static void disable()|禁用JIT编译器。 | |public static void enable()|启用JIT编译器。 |
public static Object command(Object o)
command方法用于执行指定的编译命令,可以用来执行任何可以从命令行执行的编译器命令。参数o可以是一个字符串,也可以是一个字符串数组。
以下为示例代码:
public class CompilerDemo {
public static void main(String[] args) {
String[] cmd = {"javac", "-version"};
Object result = Compiler.command(cmd);
System.out.println(result);
}
}
运行结果:
javac 1.8.0_131
public static boolean compileClass(Class<?> clazz)
compileClass方法用于对指定的类进行即时编译,并返回编译结果是否成功。需要注意的是,JIT编译器在默认情况下会自动编译类,因此只有在禁用JIT编译器后才需要手动编译类。
以下为示例代码:
public class CompilerDemo {
public static void main(String[] args) {
boolean isSuccess = Compiler.compileClass(CompilerDemo.class);
System.out.println(isSuccess);
}
}
public static boolean compileClasses(String string)
compileClasses方法用于对一组类进行即时编译,并返回编译结果是否成功。
以下为示例代码:
public class CompilerDemo {
public static void main(String[] args) {
String classList = "CopyOnWriteArrayList.class ConcurrentLinkedDeque.class ConcurrentLinkedQueue.class ConcurrentHashMap.class";
boolean isSuccess = Compiler.compileClasses(classList);
System.out.println(isSuccess);
}
}
public static void disable()
disable方法用于禁用JIT编译器。
以下为示例代码:
public class CompilerDemo {
public static void main(String[] args) {
Compiler.disable();
// 禁用JIT编译器后,需要手动编译类
boolean isSuccess = Compiler.compileClass(CompilerDemo.class);
System.out.println(isSuccess);
}
}
public static void enable()
enable方法用于启用JIT编译器。
以下为示例代码:
public class CompilerDemo {
public static void main(String[] args) {
Compiler.enable();
}
}
Java.lang.Compiler类在Java 12中已被弃用,不推荐使用。建议使用Java Compiler API或者其他第三方编译器库来代替。
本文介绍了Java.lang.Compiler类,并分别介绍了其中的五个方法。需要注意的是,Java.lang.Compiler类已被弃用,不建议使用。