
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
如今java编程可是it编程技术行业的扛把子,目前很多像要学编程的大学毕业生们都会选择来达内培训机构学java计算机编程,为什么java如此受欢迎呢?下面老师带大家来学动态性-invokedynamic,我们先来看JVM,JVM字节码指令集一直比较稳定,一直到JAVA7中才增加了一个invokedynamic指令,这是JAVA为了实现动态类型语言支持而做的一种改进。但是在JAVA7中并没有提供直接生成invokedynamic指令的方法,需要借助ASM这种底层字节码工具来产生invokedynamic指令。
直到JAVA8的Lambda表达式的出现,invokedynamic指令的生成,在java中才有了直接的生成方式。下面详细介绍java7之后对动态类型语言的支持。
长沙达内老师知道,java中所有方法的调用在class文件中都对应一个常量池中的符号引用,在类加载的解析阶段,符号引用会被解析为直接引用,有一类方法调用在运行之前就可确定一个唯一版本,这个版本在运行时不可变,我们称这类方法调用为解析。
对应的方法调用字节码为:invokespecial和invokestatic。静态方法,构造方法,私有方法以及父类方法(通过super调用的方法)都无法通过继承的方式被覆盖,因为在编译期就能确定其版本。达内java培训的老师称这类分派为静态分派,方法的重载是这种类型的典型场景。
动态类型语言和静态类型语言:动态类型语言和静态类型语言两者的区别就在于对类型的检查是在编译期还是在运行期,满足前者就是静态类型语言,反之是动态类型语言。
长沙it培训老师说的在直白一点就是静态类型语言是判断变量自身的类型信息;动态类型语言是判断变量值的类型信息,变量没有类型信息,变量值才有类型信息,这是动态语言的一个重要特征。
Java7中增加的动态语言类型支持的本质是对java虚拟机规范的修改,而不是对java语言规则的修改,达内培训老师觉得这一块相对来讲比较复杂,增加了虚拟机中的方法调用,最直接的受益者就是运行在JAVA平台的动态语言的编译器。
动态类型语言的支持对应的JSR 292,主要包括两部份,一个是JAVA标准库中的新的方法调用API,另一个是JAVA虚拟机规范中新增加的invokedynamic指令。
方法分派:静态类型和动态类型又和java的方法分派有着密不可分的关系。方法的分派根据方法版本确定的时机分为静态分派,动态分派。
上java培训机构有用吗?java前景怎么样?学java专业是否能找到好工作?这一系列的问题都是很多大学生所疑惑的,想要知道答案,其实很简单上长沙达内官网就知道了!
扫码加入超值7天试听课程报名!