Q:

Creating arrays with reference variables and casting

I am preparing for the OCA Java SE 8 exam and there is a code example that shows errors that I don't understand. 
It is about creating arrays with reference variables and casting arrays. 
Here is the code: 
String[] strings = { "stringValue" };
Object[] objects = strings;
String[] againStrings = (String[]) objects;
againStrings[0] = new StringBuilder(); //Error 1: Does not compile
objects[0] = new StringBuilder(); //Error 2

Error 1, I do understand but not Error 2. The book says:

A StringBuilder object can clearly go into an Object[]. The problem is that we don't actually have an Object[]. We have a String[] referred to from an Object[] variable.

I am not sure where this is happening. Is the casting the reason why the String[] is referred to from an Object[] variable?
Thanks in advance!

A:

That is because on line#2 
Object[] objects = strings; <--- here

You have set objects as the reference of the variable strings.
And at the line#5, you are trying to update the value of objects[0] which now represents a reference to strings
Therefore 
strings = new StringBuilder() <--- turns out to be a failure hence the error.
I hope this makes sense?

