Mike Schilling wrote:
"Patricia Shanahan" <pats@acm.org> wrote in message
news:13t06edrauqekc9@corp.supernews.com...
Andreas Leitgeb wrote:
Mike Schilling <mscottschilling@hotmail.com> 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 =
Arrays.asList(args.getClass().getInterfaces());
System.out.println("Interfaces: " + interfaces);
final List<Field> fields =
Arrays.asList(args.getClass().getFields());
System.out.println("Fields:" + fields);
final List<Field> declaredFields =
Arrays.asList(args.getClass().getDeclaredFields());
System.out.println("Declared Fields:" + declaredFields);
}
}
Class: class [Ljava.lang.String;
Super: class java.lang.Object
Interfaces: [interface java.lang.Cloneable, interface
java.io.Serializable]
Fields:[]
Declared Fields:[]
this is guaranteed.