2011-01-10 19 views
13

duplicados posibles:
What is a Null Pointer Exception?
Java: Why aren't NullPointerExceptions called NullReferenceExceptions ?¿Por qué Java tiene NullPointerException en lugar de NullReferenceException?

Nuestro simple curiosidad, ¿alguien sabe por qué la excepción de referencia nula en Java fue llamado NullPointerException?

Parece contradictorio que en un nuevo idioma que oficialmente no tiene punteros se haga una elección para usar este nombre cuando se utiliza una referencia nula.

Si alguien puede indicarme una explicación autorizada, eso sería apreciado.

+0

Entretenidamente, comenté el año pasado sobre la pregunta en el enlace de Jsight. =) – Riggy

+0

@Riggy: Uf, mi mal. Hice la búsqueda incorrecta (java NullPointerException) en lugar de (java NullReferenException). Estoy eliminando la pregunta de renunciar a cualquier representante mal adquirido. – Uri

Respuesta

5

La afirmación de que Java "oficialmente no tiene punteros" es simplemente falsa. El hecho de que no se pueda hacer aritmética no significa que no sea un puntero. C no es la autoridad final para la terminología de programación.

Las únicas personas que se cuelgan son fanáticos de C/C++ que quieren desacreditar a Java por su falta de poder sobre el metal desnudo, o (improbable, hoy en día) gente de marketing que quiera vender Java como un simple , una alternativa más segura para los gerentes que han tenido malas experiencias con el desarrollo de C.

Desde el Java language specification:

Los valores de referencia (a menudo apenas referencias) son punteros a estos objetos, y una referencia nula especial, que se refiere a ningún objeto.

+2

El desacuerdo sobre los nombres de conceptos generalmente bien entendidos es un problema fundamental en toda la disciplina de la informática. Lo que es peor es un desacuerdo sobre los nombres dentro de una especificación de un solo idioma. ¿De qué sirve tener dos palabras diferentes para referirse a lo mismo? ¿Por qué necesitan decirnos que es un puntero? ¿Decir que es tan eficiente como un puntero C/C++? En ese caso, deberían haber sido conscientes de esta discrepancia de nombres. – oleks

Cuestiones relacionadas