Przyjrzałem się kodowi bajtowemu, a jedynymi mapami są mapy tworzone w celu zainicjowania obiektów Car
.
Po zainicjowaniu dwóch obiektów samochodu, zostaną one umieszczone na liście. Operator spreadu tłumaczy (w tym przypadku) połączenie na ScriptBytecodeAdapter.getPropertySpreadSafe
.
Patrząc na źródło tej metody, zobaczysz, że w zasadzie tylko tworzy nowy ArrayList
i dodaje żądanej właściwości (w tym przypadku make
) każdego obiektu:
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;
}