Certificação Java SCJP

Ola pessoal , bom dia estou estou com uma duvida e não consegui entender essa questão;
Diz que o erro esta em “Arrays.sort(myObjects);” que gera um CastException alguem pode me dar uma
orientação !!! Vlw!!

public class Question_11 {

public static void main(String[] args) {
    Object[] myObjects = {new Integer(12), new String("FOO"), new Integer(5), new Boolean(true)};

    Arrays.sort(myObjects);
    for (int i = 0; i < myObjects.length; i++) {
        System.out.print(myObjects[i].toString());
        System.out.print("");
    }
}

}

Os objetos são diferentes dentro do array de Objects. Eles não são comparáveis. Como você pode comparar um Integer com uma String ou um Boolean? Este é o erro.

Você tenta ordenar um array que contém tipos diferentes e o método “sort” tenta comparar, por exemplo, a String com o Integer (a fim de ordená-los), tentando fazer um cast.
Como ele não consegue, ocorre uma ClassCastException.

Você ta tentando ordenar objetos de valores diferentes.

Olá $RDS$,

Está acontecendo o seguinte quando ele for ordenar o array ele está tentando ordenar com o tipo do primeiro objeto no caso Integer, quando ele for comparar com o segundo ele vai tentar fazer um cast para o tipo do primeiro e como é uma String e não um Integer é por isso que é lançado o erro.
Faça um teste agora colocando tudo como Integer ou String.

Abraço.