gpt4 book ai didi

groovy - groovy扩展运算符的Java翻译

转载 作者:行者123 更新时间:2023-12-04 19:57:04 27 4
gpt4 key购买 nike

鉴于:

class Car {
String make
String model
}
def cars = [
new Car(make: 'Peugeot', model: '508'),
new Car(make: 'Renault', model: 'Clio')]

def makes = cars*.make

怎么样 cars*.make在java的幕后工作?它是否在堆中创建了一个新的 Map 对象并合并了两个映射?

最佳答案

我查看了字节码,唯一涉及的映射是为初始化 Car 而创建的映射。对象。

一旦两个 car 对象被初始化,它们就会被放入一个列表中。展开运算符转换(在本例中)为对 ScriptBytecodeAdapter.getPropertySpreadSafe 的调用。 .

查看该方法的来源,您会发现它基本上只是创建了一个新的 ArrayList并添加每个对象的请求属性(在本例中为 make ):

public static Object More ...getPropertySpreadSafe(Class senderClass, Object receiver, String messageName) throws Throwable {
if (receiver == null) return null;

List answer = new ArrayList();
for (Iterator it = InvokerHelper.asIterator(receiver); it.hasNext();) {
answer.add(getPropertySafe(senderClass, it.next(), messageName));
}
return answer;
}

关于groovy - groovy扩展运算符的Java翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31778572/

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