<< Chapter < Page | Chapter >> Page > |
A type-generic array object
All classes in Java are subclasses of the class named Object . This program creates an array object with the declared type being type Object . An array of type Object can be used to store references to objects instantiated from any class.
After creating the array object, this program instantiates three objects of the class String and stores those object's references in the elements of the array. (As I pointed out in the comments, there is a simpler and better way to instantiate String objects, but it wouldn't illustrate my point as well as doing the way that I did.)
Sometimes you need to downcast
Although an array of type Object can be used to store references to objects of any type (including mixed types and references to other array objects) , you will sometimes need to downcast those references back to their true type once you extract them from the array andattempt to use them for some purpose.
Polymorphic behavior applies here
For this case, however, because the toString method is defined in the Object class and overridden in the String class, polymorphic behavior applies and it is not necessary to downcast the references to type String in order to be able to convert them to strings and display them.
C. 0
0 10 2 4
Defer size specification for secondary arrays
It is not necessary to specify the sizes of the secondary arrays when you create a multi-dimensional array in Java. Rather, since the elements in theprimary array simply contain references to other array objects (or null by default) , you can defer the creation of those secondary array objects until later.
Independent array objects
When you do finally create the secondary arrays, they are essentially independent array objects (except for the requirement for type commonality among them) .
Ragged arrays
Each individual secondary array can be of any size, and this leads to the concept of a ragged array . (On a two-dimensional basis, a ragged array might be thought of as a two-dimensional array where each row can have a different numberof columns.)
This program creates, populates, and displays the contents of such a two-dimensional ragged array. Although this program creates a two-dimensionalarray that is triangular in shape, even that is not a requirement. The number of elements in each of the secondary arrays need have no relationship to the numberof elements in any of the other secondary arrays.
B. Runtime Error
NullPointerException
The following code fragment shows that this program attempts to perform an illegal operation on the value accessed from the array object at index 1.
Integer[] A = new Integer[2];
A[0]= new Integer(1);
System.out.println(A[1].intValue());
You can't call methods on null references
The reference value that was returned by accessing A[1] is the default value of null. This is the value that was deposited in the element when the array object was created (no other value was ever stored there) . When an attempt was made to call the intValue method on that reference value, the following runtime error occurred
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?