2012-03-08 3 views
9

Se ciò è possibile, quale parte del compilatore java deve essere reingegnerizzata ha un'istruzione "import as", quindi i codici possono assomigliano in questo modo:Che cosa è necessario fare per implementare "import ... as ..." in java

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

Ancor più, che cosa bisogno di ottenere questo tipo di sintassi:

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

E che problemi causerà per i codici esistenti?

+0

Stai dicendo che intendi "riprogettare" il compilatore Java? –

+0

Basta provare a capire * java * way. –

+1

Nota: l'intero meccanismo 'import' esiste solo al momento della compilazione. Una volta arrivati ​​ai file '.class', sono tutti nomi di classi completamente qualificati. In questo modo * solo * richiede modifiche al compilatore, non è necessario modificare altre parti del sistema (JVM, librerie, ...). –

risposta

6

Questo ovviamente richiede modifiche al compilatore Java. Se sei davvero interessato a fare qualcosa di simile, guarda il progetto OpenJDK, dove troverai il codice sorgente per il compilatore Java di Oracle e l'ambiente di runtime.

Se si desidera proporlo come una nuova funzionalità per una versione futura di Java, è necessario passare attraverso lo Java Community Process.

+0

Voto questo post come la risposta migliore e semplice. Tuttavia, non capisco l'utilizzo di questa funzione se questo meccanismo propone a JCP. È più facile e leggibile per tutti scrivere 'Date' invece che' MyDate' –

+0

In ipotesi, ci devono essere molti JCP per questo tipo di * sintassi sugar *. –

+4

@ wahyu.fahmy Ci sono esempi di dove questo potrebbe essere utile. C'è per esempio 'java.util.Date' e' java.sql.Date'. Se li importi entrambi, allora Java non sa quale intendi se usi il nome "Date". Sarebbe utile se si potesse rinominarlo in 'SqlData', ad esempio. – Jesper

Problemi correlati