2012-03-08 539 views
9

如果可能的話,需要重新設計java編譯器的哪個部分有一個「import as」語句,因此代碼可以像這樣:在java中實現「import ... as ...」需要做些什麼

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

更有甚者,有什麼需要得到這樣的語法:

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

它會造成什麼麻煩現有的代碼?

+0

您是否暗示您打算對Java編譯器進行「重新設計」? – 2012-03-08 05:46:33

+0

試着理解* java *的方式。 – 2012-03-08 05:55:13

+1

注意:整個'import'機制只在編譯時才存在。一旦你到達'.class'文件,它都是完全正式的類名。所以這種改變只會*需要修改編譯器,而系統的其他部分(JVM,庫,...)則需要改變。 – 2012-03-08 07:28:31

回答

6

這顯然需要對Java編譯器進行更改。如果您真的有興趣做這樣的事情,那麼請看OpenJDK項目,您將在其中找到Oracle Java編譯器和運行時環境的源代碼。

如果您想將此作爲Java未來版本的新功能提出,那麼您必須通過Java Community Process

+0

我投票這個帖子是最好的和簡單的答案。雖然,如果這個機制提議給JCP,我不明白這個特性的用法。每個人都可以更容易和易讀地編寫'Date'而不是'MyDate' – 2012-03-08 07:32:15

+0

在猜測中,這種*語法糖必須存在大量的JCP。 – 2012-03-08 07:32:34

+4

@ wahyu.fahmy有些地方可能有用的例子。例如'java.util.Date'和'java.sql.Date'。如果你同時導入它們,那麼如果你使用'Date'這個名字,Java並不知道你的意思。例如,如果您可以將其重命名爲'SqlDate',將會非常有用。 – Jesper 2012-03-08 07:56:50