Groovy getAt()vs get()

rvd*_*rvd 5 groovy

考虑清单:
def list = [1, 2, 3]
如果我使用
list.getAt(0)
或者
list.get(0)
两者都会给出相同的输出.
但是getAt()和get()之间有什么区别吗?

JB *_*zet 15

文档解释了它:

支持List的下标运算符.

def list = [2, "a", 5.3]
assert list[1] == "a"
Run Code Online (Sandbox Code Playgroud)

所以没有区别,但是getAt()允许使用Groovy代码的方法list[1]代替list.get(1)

有关运算符重载的工作原理,请参见http://groovy.codehaus.org/Operator+Overloading.


小智 8

文档没有很好地解释这一点,但实际上我的测试中的差异实际上是在引用索引实际上不在列表中时getAt(i)返回null,而当不在列表中的索引传入时该get(i)方法将抛出IndexOutOfBoundsException就像普通的旧Java一样.