qnt*_*ntm 12 java string groovy jvm-languages
Wikipedia 目前关于Groovy编程语言的文章解释说"大多数有效的Java文件也是有效的Groovy文件",并提供以下示例,首先是Java代码:
for (String it : new String[] {"Rod", "Carlos", "Chris"})
if (it.length() <= 4)
System.out.println(it);
Run Code Online (Sandbox Code Playgroud)
然后在Groovy中相同:
["Rod", "Carlos", "Chris"].findAll{it.size() <= 4}.each{println it}
Run Code Online (Sandbox Code Playgroud)
请注意,在第一个示例中,我们使用了完全普通的Java方法java.lang.String.length().在第二个例子中,这个方法已被神秘地替换为对一个名为的方法的调用size().我已经验证第二个示例是有效的Groovy代码并且具有正确的行为.
java.lang.String没有一个叫做的方法size().Groovy没有String为自己的目的进行子类化:
String s = ""
Class c = s.getClass()
println c.getName() // "java.lang.String"
Run Code Online (Sandbox Code Playgroud)
它也不会以某种方式为String对象添加额外的方法:
// [...]
for (def method : c.getMethods()) {
println method.getName()
}
// prints a whole bunch of method names, no "size"
Run Code Online (Sandbox Code Playgroud)
但仍然这个代码以某种方式工作:
// [...]
println s.size() // "0"
Run Code Online (Sandbox Code Playgroud)
我找不到任何Groovy文档来解释这个.
size()来的?length()为什么不首选?java.lang.String?doe*_*eri 14
Groovy为字符串和各种其他类添加了许多方法.所有便捷方法都是Groovy很棒的部分原因.
java.lang.String实现java.lang.CharSequence,这就是它获得所有(大部分)魔力的地方.size(), 例如.Groovy size()为大多数对象添加了一种方法,可以将某些东西视为一个大小,以便您可以全面使用一致的方法.length()仍然完全有效,Groovy不会删除它.
要查看Groovy添加的一些方法,请查看GDK,特别是CharSequence和Collection.
我建议您阅读 Groovy 类的文档StringGroovyMethods,它简单地解释了 Groovy 的工作原理。
使用静态方法时,第一个参数是目标类,例如。public static Stringreverse(String self) 为String提供reverse()方法。
| 归档时间: |
|
| 查看次数: |
14983 次 |
| 最近记录: |