2012-03-08 6 views
9

Si esto es posible, a qué parte del compilador Java se debe rediseñar tiene una instrucción "importar como", de modo que los códigos pueden se parecen a esta forma:Qué hay que hacer para implementar "importar ... como ..." en java

import java.util.Date; 
import mypackage.Date as MyDate; 
//... 
javaDate = new Date(); 
myDate = new MyDate(); 

Aún más, lo que necesita para obtener este tipo de sintaxis:

import java.util.Date; 
import path.to.mypackage as MP; 
//... 
javaDate2 = new Date(); 
myDate2 = new MP.Date(); 

Y lo que causará problemas para los códigos existentes?

+0

¿Está insinuando que tiene la intención de "volver a diseñar" el compilador de Java? –

+0

Solo trata de entender la forma * java *. –

+1

Nota: todo el mecanismo de 'importación' existe solo en tiempo de compilación. Una vez que llegue a los archivos '.class', todos los nombres de clase están completamente quitados. Entonces, ese cambio * solo * requeriría cambios en el compilador, no se necesitaría cambiar ninguna otra parte del sistema (JVM, bibliotecas, ...). –

Respuesta

6

Esto obviamente requiere cambios en el compilador de Java. Si realmente está interesado en hacer algo como esto, mire el proyecto OpenJDK, donde encontrará el código fuente para el compilador Java de Oracle y el entorno de tiempo de ejecución.

Si desea proponer esto como una nueva característica para una versión futura de Java, entonces tendría que pasar por el Java Community Process.

+0

Voto esta publicación como la mejor y más simple. Sin embargo, no entiendo el uso de esta característica si este mecanismo lo propone a JCP. Es más fácil y legible para todos escribir 'Fecha' en lugar de 'MiFecha' –

+0

Supongo que debe haber muchos JCP para este tipo de * sintaxis azúcar *. –

+4

@ wahyu.fahmy Hay ejemplos de dónde esto podría ser útil. Hay, por ejemplo, 'java.util.Date' y' java.sql.Date'. Si los importas a ambos, entonces Java no sabe a cuál te refieres si usas el nombre 'Fecha'. Sería útil si pudiera cambiarle el nombre a 'SqlDate', por ejemplo. – Jesper

Cuestiones relacionadas