C'è un sovraccarico quando lanciamo oggetti di un tipo su un altro? O il compilatore risolve tutto e non ci sono costi in fase di esecuzione?Il casting Java introduce un sovraccarico? Perché?
È una cosa generale o ci sono casi diversi?
Ad esempio, supponiamo di disporre di un array di Object [], in cui ogni elemento potrebbe avere un tipo diverso. Ma sappiamo sempre che, per esempio, l'elemento 0 è un doppio, l'elemento 1 è una stringa. (So che questo è un disegno sbagliato, ma supponiamo che dovessi farlo.)
Le informazioni sul tipo di Java sono ancora conservate in fase di esecuzione? O tutto viene dimenticato dopo la compilazione e se facciamo gli elementi (Double) [0], seguiremo semplicemente il puntatore e interpreteremo quegli 8 byte come un doppio, qualunque cosa sia?
Non sono molto chiaro su come i tipi sono fatti in Java. Se avete qualche raccomandazione su libri o articoli, allora grazie anche a voi.
Le prestazioni di instanceof e casting sono abbastanza buone. Ho postato un po 'di tempo in Java7 su diversi approcci al problema qui: http://stackoverflow.com/questions/16320014/java-optimization-nitpick-is-it-faster-to-cast-something-and-let-it- throw-exception/28858680 # 28858680 – Wheezil
Questa altra domanda ha risposte molto buone http://stackoverflow.com/questions/16741323/casting-performance-in-different-levels-when-casting-down – user454322