Java1.6以后引入动态编译,在做一个浏览器端编写java代码,上传服务器编译和运行的在线评测
系统或是服务器动态加载某些类文件进行编译的时候就用到了动态编译:
通过JavaCompiler动态编译:
1 | public static int compileFile(String sourceFile){ |
• 第一个参数:为java编译器提供参数
• 第二个参数:得到 Java 编译器的输出信息
Java1.6以后引入动态编译,在做一个浏览器端编写java代码,上传服务器编译和运行的在线评测
系统或是服务器动态加载某些类文件进行编译的时候就用到了动态编译:
通过JavaCompiler动态编译:
1 | public static int compileFile(String sourceFile){ |
• 第一个参数:为java编译器提供参数
• 第二个参数:得到 Java 编译器的输出信息
虽然Java不是动态语言1,但Java语言具有一定的动态性,可以利用反射机制,字节码操作获得类似动态语言的特性,Java的动态性让编程更加灵活。
反射:指的是可以在程序运行时加载、探知、使用编译期间完全未知的类。加载完类之后,在堆内存中,就产生了一个 Class 类型的对象(一个类只有一个 Class 对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,形象的称为反射。
反射机制的作用:重点在于动态性:动态加载类、动态获取类的信息(属性、方法、构造器);动态创建对象;动态调用方法、构造器;动态处理属性;此外还能处理泛型、注解。
Annotation的作用:
1.不是程序本身,可以对程序作出解释。(这一点,跟注释没什么区别)
2.可以被其他程序(比如:编译器,其他类(通过反射))读取。(注解信息处理流程,是注解和注释的重大区别如果没有注解信息处理流程,则注解毫无意义)
Annotation的格式:
注解是以“@注释名”在代码中存在的,还可以添加一些参数值,例如:
@SuppressWarnings(value=”unchecked”)。(抑制警告)
Annotation在哪里使用:
可以附加在package, class, method, field等上面,相当于给它们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。
准备工作
安装git:https://git-scm.com
安装nodejs:https://nodejs.org/en/
安装hexo
1.以管理员身份运行:sudo su
2.可以验证是否装好git和nodejs输入:git -version;node -v;npm -v;查看对应的版本是否一致。