gpt4 book ai didi

groovy - 在 Groovy 中声明类型

转载 作者:行者123 更新时间:2023-12-04 09:04:37 28 4
gpt4 key购买 nike

当您没有在 groovy 中为变量声明类型时,我的理解是 java 虚拟机必须使用反射才能在执行任何方法之前确定对象的类型,并且有可能引发运行时错误.

如果这是正确的,那么当你声明类型时呢? java虚拟机是否仍然因为原始代码在groovy中而最终使用反射?还是我对整个事情的理解一开始就不正确?

最佳答案

它仍然大量使用反射。
您必须记住的一件事是,方法调用是在运行时解决的。
最简单的查看方式

Integer.metaClass.xxx << {println "hi"}
Integer ten = 10
ten.xxx()

即使普通的整数 100 没有方法 xxx,也会编译。
第一行将方法添加到类中,但编译器在编译时不会知道这一点(该方法是在运行时添加的)。
知道类型并不重要,groovy 仍然使用反射来执行调用。
另一个例子。
def (Number i, Number l) = [100, 100L]
print i
print l
def print(Number n) {println "Number $n"}
def print(Integer n) {println "Integer $n"}

在 java 中,它会打印两次 Number 100,因为该方法是静态选择的。
Groovy 并不关心,它只是在运行时根据参数的类来选择方法。

关于groovy - 在 Groovy 中声明类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5338381/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com