2012-03-08 17 views
9

Jeśli jest to możliwe, to jaka część kompilatora Javy musi zostać przeprojektowana tak, aby zawierała instrukcję "importuj jako", więc kody mogą wyglądać tak:Co należy zrobić, aby zaimplementować "zaimportować ... jako ..." w java

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

Nawet więcej, czego potrzebujesz, aby ten rodzaj składni:

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

A co spowoduje kłopoty dla istniejących kodów?

+0

Czy sugerujesz, że masz zamiar "przeprojektować" kompilator Java? –

+0

Po prostu spróbuj zrozumieć sposób * java *. –

+1

Uwaga: Cały mechanizm 'import' istnieje tylko podczas kompilacji. Gdy dojdziesz do plików '.class', to wszystkie w pełni kwalifikowane nazwy klas. Aby ta zmiana * wymagała tylko zmian w kompilatorze, żadna inna część systemu (JVM, biblioteki, ...) nie musiałaby zostać zmieniona. –

Odpowiedz

6

To oczywiście wymaga zmian w kompilatorze Java. Jeśli naprawdę chcesz zrobić coś takiego, spójrz na projekt OpenJDK, w którym znajdziesz kod źródłowy kompilatora Java i środowiska wykonawczego Oracle.

Jeśli chcesz zaproponować to jako nową funkcję dla przyszłej wersji Java, musisz przejść przez Java Community Process.

+0

Głosuję w tym poście jako najlepsza i prosta odpowiedź. Chociaż nie rozumiem korzystania z tej funkcji, jeśli ten mechanizm proponuje JCP. Łatwiej i czytelniej jest napisać "Date" zamiast "MyDate" –

+0

Zgadując, musi istnieć wiele JCP dla tego rodzaju * cukru składniowego *. –

+4

@ wahyu.fahmy Istnieją przykłady tego, gdzie może to być przydatne. Są na przykład 'java.util.Date' i' java.sql.Date'. Jeśli je zaimportujesz, to Java nie będzie wiedziała, który z nich masz na myśli, jeśli używasz nazwy "Date". Byłoby użyteczne, gdybyś mógł np. Zmienić nazwę na 'SqlDate'. – Jesper

Powiązane problemy