Java: plusieurs façons de lancer un objet (long) en double

J'ai un Object obj que je sais, c'est en fait un long.
Dans certains code Mathématique j'ai besoin d'elle comme double.

Est-il sécuritaire de directement convertir en double?

double x = (double)obj;

Ou devrais-je plutôt cast-le d'abord et puis d'un double.

double x = (double)(long)obj;

J'ai aussi trouvé un autre (moins lisible) alternative:

double x = new Long((long)obj).doubleValue();

Quels sont les dangers et les répercussions de le faire?

Résumé De La Solution:

  • obj est un Number et pas un long.
  • Java 6 nécessite une conversion explicite, par exemple: double x = ((Number)obj).doubleValue()
  • Java 7 a de travail de la fonte de la magie: double x = (long)obj

Pour plus de détails sur la Java6/7 question également lire les discussions de TJ répondre.

Edit: j'ai fait quelques tests rapides. Les deux moyens de moulage (explicite/magie) ont le même rendement.

source d'informationauteur Juve