对象引用
在赋值语句age=25中,使用Groovy的动态类型(dynamic typing)功能。age变量所引用值的类型是在其运行过程中,而不是在编译时确定的。动态类型通常会使程序变得更为简洁,这也是Groovy之所以简洁与灵活的的主要原因。执行此赋值语句时会创建一个Integer对象,并将25赋值给它,变量age的引用关系如图2-1所示。 图2-1 变量与对象引用
变量与对象之间的关联关系被称为引用。变量引用了该对象所使用的内存部分。任何使用该变量的情况,如在表达式age+22中,将使用引用来获得与该对象相关的对象值。 请考虑下面的表达式: def age = 25 在groovy中,变量通常都和对象相关联。因此,第二个赋值语句的作用是,让number变量引用age变量所引用的同一个对象。图2-2是一个用来描述共享(或者别名)的范例。在这个范例中,两个变量均引用相同的对象。 图2-2 共享
图2-3 重新赋值
图2-4 内存垃圾
上述这些图说明说明了,在程序代码的任何地方,可以非常自由地给变量赋新值。更进一步来说,这些新值可以通过已经存在的值而拥有不同的数据类型。这既是Groovy的优点,同时也是它的弱点。举例来说,用户可以自由地将一个String值赋给前面引用Integer的变量,其危险在于:在程序代码中可能不会意识到此问题,并导致其他难以预测的后果。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |