對全世界所有程式設計人員來說,微軟的.NET平台與昇陽的Java平台,無疑是兩大最具有代表性的架構。 Java平台挾帶著開放、歷史悠久的優勢,聚集了不少支持者,包括個人及企業。Java語言已是許多重量級企業開發產品的平台,如昇陽、IBM、Oracle等等。理論上開放平台的Java,在眾多支持者的推動下,理應發展迅速,但實際上卻不然;在Java語言規範,作大規模的發展,需考慮其背負的相容性包袱,又有各大廠商彼此的利益衝突,發展稍嫌緩慢。 作為.NET平台的代表性語言,C#吸收了許多其它程式語言的優點(特別是Java),在語法亦與Java相近,也因此受到許多程式開發者的青睞。因.NET是微軟的專屬平台,在其全力推動下,發展相當迅速,這也使得物件導向語言越來越簡練而直觀。 在最新的.NET框架(.NET Framework)上,微軟提出一個LINQ專案,目的是統一各種不同資料查詢上的語法,將資料庫、XML、或是物件集合的屬性存取,用同一種共通的方式來操作,如比對、排序、彙總等等。延伸方法(Extension Methods)是LINQ的特色之一,允許使用者在各種型別(types)、類別(classes)、界面(interfaces)等等資料結構下,新增自行定義的方法(methods),而不受任何限制。 從程式開發者的角度來看,延伸方法能從使用者的角度,替任何型別或類別加入方法,十分具有吸引力。因此我們也希望能夠在維持相容性的前提下,在Java平台上使用延伸方法。本論文從C#實作延伸方法的方式著手,將其精神導入Java平台,並提供一個在Java平台上使用延伸方法的機制,而不需要修改Java編譯器(Java compiler)及Java虛擬機器(Java VM),以確保此機制的相容性。