Re: arrays and cloning, where is it described?

"Daniel Pitts" <newsgroup.spamfilter@xxxxxxxxxxxxxxxxxxx> wrote in message
Mike Schilling wrote:
"Patricia Shanahan" <pats@xxxxxxx> wrote in message
Andreas Leitgeb wrote:
Mike Schilling <mscottschilling@xxxxxxxxxxx> wrote:
In what ways are arrays not objects?
Don't know, if that's what Daniel meant, but arrays are not
accessed through get-/putfield (except for length) or invoke...
opcodes, but through <x>aload/<x>astore opcodes for <x> any
of [abcdfils].
That is an implementation detail in compilers that target bytecode, not
a Java language feature.

What Patricia said.

All of the array types (i.e. array of X) are subclasses [1] of Object; to
me, that says that arrays are objects.

1. Descendents, anyway. Do we know for a fact that their immediate
superclass is Object?
public class Foo {
public static void main(String[] args) {
System.out.println("Class: " + args.getClass());
System.out.println("Super: " + args.getClass().getSuperclass());
final List<? extends Class<?>> interfaces =
System.out.println("Interfaces: " + interfaces);
final List<Field> fields =
System.out.println("Fields:" + fields);
final List<Field> declaredFields =
System.out.println("Declared Fields:" + declaredFields);


Class: class [Ljava.lang.String;
Super: class java.lang.Object
Interfaces: [interface java.lang.Cloneable, interface]
Declared Fields:[]

Yes, I know that the superclass is Object *now*, but I don't know whether
this is guaranteed.