Please read my comment again. I didn't say no statically typed languages support them.
But your Java example isn't a true heterogeneous lists, very close but not really. You cannot put instances of value types into it.
Even if it were a true heterogeneous list. You have given up on static typing with such a list and defer it to runtime. Which is exactly the dynamic typing approach.
If you want to do tricky pointer stuff, the Java hack around that is an array that holds the pointer to the value instead; and, autoboxing allows ints into it. It’s a heterogeneous list.
The List<Object> cannot hold int, double etc. It can only hold the boxed variants. Auto boxing takes some of the pain away but it's still not a heterogeneous list which has the requirement that it can hold values of any type.
I'd wager that the up and coming inline classes in java also can't be put into a List<Object> but maybe I'm wrong.
No I don't think so. The main requirement of a heterogeneous list is that it can hold any type. In addition in a statically typed language I'd say to truly qualify as a heterogeneous list it should actually be typesafe. Java fullfills neither requirement.
Seems like the rub is "The main requirement of a heterogeneous list is that it can hold any type." when I think I would colloquially say, and use as a working definition, that they need to hold different types.
Also the rub is that "type" means two things: what a variable can have OR a class (that inherits from `Object`).
Like, chances are, the individual is going to say that Ruby provides that power; but, by the time you've reached Ruby levels of abstraction, the odds of any argument about performance and data marshalling go out the window.
It's a difference without a meaning, as far as I can tell.
But your Java example isn't a true heterogeneous lists, very close but not really. You cannot put instances of value types into it.
Even if it were a true heterogeneous list. You have given up on static typing with such a list and defer it to runtime. Which is exactly the dynamic typing approach.