In C ci sono due modi per convertire un tipo: il cast esplicito e implicito.
E mi è sempre evidente se il cast è esplicito o no, ad esempio, se ho:
codice:
int i;
float f;
f=f+i; // cast implicito
i=(int)f; // cast esplicito
Ma in java ci sono altri modi per convertire: ad esempio utilizzando il metodo toString().
Visto che la differenza sostanziale tra cast esplicito e implicito è che nel cast esplicito si specifica a livello di codice che si sta effettuando una conversione, se io ho una classe A che contiene il metodo toString(), e dichiaro:
codice:
A a=new A();
System.out.println(a);
Sto effettuando un cast implicito o esplicito? A livello di codice non sto specificando niente,eppure questa dichiarazione è equivalente a:
codice:
System.out.println(a.toString());
//Oppure:
System.out.println((String)a);
E non sono sicuro se dichiarando System.out.println(a) il cast avviene a runtime o a compile time.
Cosa dite ?