Ebben egyetértek, de
my @array = (1,2,3,4);
List<Integer> array = new ArrayList<>() { 1,2,3,4 };
Azért a kettő nem teljesen ugyanaz. Reflection is mindenre jó, de azért inkább a setter és getter. Számít, hogy hány karaktert kell leírnod. Az operátor overload is mezei függvényhívás, mégis nagyban segíti/gátolja az átláthatóságot.