JP5165234B2 - ジャバ言語におけるメソッド参照のサポート - Google Patents

ジャバ言語におけるメソッド参照のサポート Download PDF

Info

Publication number
JP5165234B2
JP5165234B2 JP2006331172A JP2006331172A JP5165234B2 JP 5165234 B2 JP5165234 B2 JP 5165234B2 JP 2006331172 A JP2006331172 A JP 2006331172A JP 2006331172 A JP2006331172 A JP 2006331172A JP 5165234 B2 JP5165234 B2 JP 5165234B2
Authority
JP
Japan
Prior art keywords
class
call
interface
source code
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006331172A
Other languages
English (en)
Other versions
JP2007141248A (ja
Inventor
ハミルトン グラハム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2007141248A publication Critical patent/JP2007141248A/ja
Application granted granted Critical
Publication of JP5165234B2 publication Critical patent/JP5165234B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

JAVA(登録商標)言語はユーザインターフェースに対して実施されたユーザのアクションを検知し且つそれに応答するためのイベント処理メカニズムを提供する。これらのイベント処理メカニズムを使用して、プログラマは、ユーザインターフェースの特定した要素に関連する特定した型のイベントの発生に応答してプログラムが実施すべきオペレーションを特定することが可能である。該特定した型のイベントが発生すると、プログラムは特定した組の命令を自動的に呼び出す。プログラマは、該特定した型のイベントの発生を周期的に調査する命令をコーディングすることの負担から免除される。
異なるプログラミング言語はイベント処理メカニズムを特定するための異なる構文上の技法を提供する。JAVAにおいては、イベント処理メカニズムは、伝統的に、「イベントリスナー(EventListener)」インターフェースを使用してコード化されている。JAVAにおいては、「インターフェース」は、丁度クラスが型であるように、1つの型である。クラスのように、インターフェースはメソッドを定義する。クラスと異なり、インターフェースはメソッドをインプリメントすることは無く、その代わりに、そのインターフェースをインプリメントするクラスがそのインターフェースにより定義されるメソッドをインプリメントする。1つのクラスは複数のインターフェースをインプリメントすることが可能である。
歴史的に、イベントリスナーインターフェースの機能性を利用するために、プログラマは、そのイベントリスナーインターフェースのうちの特定の1つをインプリメントする新たなクラスを定義することが必要であった。各イベントリスナーインターフェースは異なる組のメソッドを定義する場合があり、その場合に、各メソッドは異なるイベント型に対応している。例えば、1つのメソッドは1つの「マウスクリック(mouse click)」イベントタイプに対応する場合があり且つ別のメソッドは「マウスオーバー(mouse over)」イベントタイプに対応する場合がある。プログラマが「マウスクリック」イベント型の発生に応答して特定の組のオペレーションを彼のコードが実施することを所望する場合には、そのプログラマは新たなクラスにおけるそのメソッドの特定のインプリメンテーションを配置させることにより適宜のインターフェースの適宜のメソッドを「インプリメント(implement)」することが必要であった。そのメソッドのインプリメンテーションのコード内において、プログラマはそのメソッドに対応するイベント型のイベントの発生によって実行される命令を配置させていた。
例えば、JAVAプログラムは以下のようなコードを有している場合がある。
Figure 0005165234
上のコードにおいて、プログラマが定義したクラス「FredClicked」は「ActionListener」と呼ばれるイベントリスナーインターフェースをインプリメントする。ActionListenerは、プログラマがFredClicked内にインプリメントさせた「actionPerformed」メソッドを定義する。該メソッドのインプリメンテーションは、「fred clicked」というテキストをシステム出力装置へ送らせる。ActionListenerをインプリメントするその他のクラスは異なる態様で「actionPerformed」メソッドをインプリメントする場合がある。
しばしば、ユーザインターフェースは、ユーザが相互作用することが可能な複数のユーザインターフェース要素(例えば、ボタン、テキストボックス、ラジオボタン、チェックボックス等)を包含している。これらのユーザインターフェース要素の各々に関連して複数の異なるイベントが発生する場合がある。上述した従来のアプローチを使用する場合には、各異なるイベント型・ユーザ要素対に対して新たなクラス(上の例のFredClickedクラスに構造が類似)を定義することが必要であった。例えば、ユーザインターフェースが5個のユーザインターフェース要素から構成されており、且つこれらのユーザインターフェース要素の各々に関連して発生する場合のある5つの型のイベントが存在しており、且つプログラマは彼のプログラムが各ユーザインターフェース要素に関連して各可能なイベント発生に応答して特定のオペレーションを実施することを所望する場合には、そのプログラマは25個の別個のクラスをインプリメントすることが必要であった。
そのうち、プログラマは、しばしば、高度に類似しており且つ基本的にはJAVA言語の構文上の条件のためにのみ必要な新たなクラス定義を何度も何度も再入力することが厄介であることに気づく。然しながら、イベントリスナーインターフェースは長い間JAVAの中心的な部分であったものであるから、現在のインターフェースに基づいたイベント処理メカニズムを特定する態様からの著しい逸れはJAVAの一般的なスキームに上手く合わない場合がある。他のプログラミング言語により使用される著しく異なる技法を採用するためにプログラミングセマンティクスにおける著しい変化は、JAVA及びその特性、特にJAVA型システムに慣れている者により受けがよくない場合がある。
従って、より簡潔でより冗長でない構文を使用してJAVAにおいてプログラマがイベント処理メカニズムを特定することを可能とする技法は有用であり且つ望ましいものである。
本発明の1実施例によるプログラムコードを発生するためのマシンで実現される方法は、ソースコード内において、メソッド呼出しにおいて呼び出されている第一プログラムメソッドに対するパラメータとしてパスされる特定の参照を見つけ、該参照を見つけることに応答して、該特定の参照が第二プログラムメソッドに対する参照であるか否かを決定し、該特定の参照が該第二プログラムメソッドに対する参照であることの決定に応答して、前記メソッド呼出しにおいて呼び出された前記第一プログラムメソッドにより期待されるオブジェクトのクラスによりインプリメントされるインターフェースを決定し、前記インターフェースをインプリメントする新たなブリッジクラスに対応するバイトコードを生成し、前記メソッド呼出しを、前記第二プログラムメソッドに対する参照の代わりに、前記ブリッジクラスのオブジェクトへの参照をパスするメソッド呼出しへマッピングすることを包含している。
この技法の結果として、プログラマは、これらのプログラマが彼らのコードにおいて配置させるイベント処理メソッドに対する別々のクラスを定義する負担から免除される。イベント処理メソッドをインプリメントする新たなクラスを定義し、次いでその新たなクラスのインスタンスであるオブジェクトを別のメソッド(例えばイベントリスナーを登録するメソッド)へのパラメータとしてパスする代わりに、プログラマは単純にそのイベント処理メソッドを定義し且つそのイベント処理メソッドへの参照をオブジェクト参照がパスされるメソッドへのパラメータとしてパスさせることが可能である。従って、プログラマはそのイベント処理メソッドをインプリメントする新たなクラスの定義を完全に省略することが可能である。
本発明の1実施例によれば、ソースコードをコンパイルしている間にオブジェクトへの参照を受取ることを期待する第一メソッドの呼出しが該第一メソッドに対してオブジェクトへの参照の代わりに第二メソッドへの参照をパスすることをJAVAコンパイラが決定する場合に、そのJAVAコンパイラはそのJAVAコンパラーが通常行うようなコンパイル時エラーを発行することがないようにJAVAコンパイラは修正されている。その代わりに、JAVAコンパイラは、そのソースコードが(a)その第二メソッドを呼出したメソッドをインプリメントする「ブリッジ」クラスを定義しており、且つ(b)その第一メソッドの呼出しにおいて、該第二メソッドへの参照の代わりに「ブリッジ」クラスのインスタンスであるオブジェクトへの参照を包含している場合にJAVAコンパイラが発生するようなコンパイルされたコード(例えば、バイトコード)を発生する。
例えば、コンパイラは以下のソースコードをコンパイルしている場合があり、その場合に、第一メソッド「addActionListener」の呼出しが、「addActionListener」へのパラメータとして、第二メソッド「fredClicked」への参照をパスし、その場合に「addActionListener」はその代わりにオブジェクトへの参照を受取ることを期待する(「addActionListener」の定義に基づいて)。
Figure 0005165234
以前においては、「addActionListener」メソッドの呼出しは、その存在をコンパイラが気が付いていない見掛けのオブジェクト「fredClicked」への参照をパスするので、上のコードはコンパイラをしてコンパイル時エラーを発行させる。上のコードは「fredClicked」という名前のオブジェクトのインスタンス化を包含するものではない。以前においては、コンパイラがこのような呼出しに遭遇すると、コンパイラは、そのソースコードがどこか他に「fredClicked」という名前のオブジェクトをインスタンス化させているか否かを決定しようとしていた。そのソースコードがそのようにしていないことを決定すると、コンパイラはエラーを発行していた。
然しながら、本発明の1実施例によれば、このような呼出しに遭遇することに応答して、コンパイラは、その代わりに、そのソースコードが(a)メソッド「fredClicked」を呼出したメソッドをインプリメントするクラス「fredClickedBoxer」を付加的に定義しており且つ(b)メソッド「addActionListener」の呼出しにおいてメソッド「fredClicked」への参照の代わりにクラス「fredClickedBoxer」のインスタンスであるオブジェクトへの参照を包含している場合にそのコンパイラが発生するようなバイトコードを発生する。
例えば、上のソースコードに示した呼出しに遭遇することに応答して、コンパイラは、上のソースコードにおけるアウタークラス「Foo」が以下のコードを付加的に包含している場合に発生されるようなバイトコードを自動的に発生する場合がある。
Figure 0005165234
付加的に、その呼出しに遭遇することに応答して、呼出し「fred.addActionListener(fredClicked)」に基づいてコンパイラが発生するようなバイトコードを発生する代わりに、該コンパイラは呼出し「fred.addActionListener(new FredClickedBoxer(this))」に基づくバイトコードを該コンパイラが自動的に発生する場合がある。
コンパイラは、該バイトコードを発生する前に上の代替的ソースコードを発生することは実際には必要ではなく、該コンパイラはそのオリジナルのソースコードをあたかもそれが該代替的ソースコードと等価であるかのように取扱い且つ該代替的ソースコードがどのようにして書かれたかに基づいてバイトコードを発生することが可能である。該コンパイラは該代替的ソースコードと機能的に等価なバイトコードを発生する。上から理解することが可能であるように、該代替的ソースコードは、メソッド「fredClicked」を呼出すメソッド「actionPerformed」をインプリメントする新たな「ブリッジ」クラス「fredClickedBoxer」の定義を包含しており、又、メソッド「fredClicked」への参照の代わりにクラス「fredClickedBoxer」のインスタンスであるオブジェクトへの参照をメソッド「addActionListener」へパスする改定した呼出しを包含している。
グラハムハミルトン(Graham Hamilton)による「ザジャバビーンズAPI仕様(The JavaBeans API Specification)」、バージョン1.01(1997年8月8日)をあたかも完全に且つ元の通りに本明細書に開示されているかの如く引用により取り込む。「ザジャバビーンズAPI仕様」は標準のJAVAイベント処理モデルを定義している。
本発明の1実施例によれば、コンパイル時期間中に、コンパイラが、ソースコードにおいて、クラス「Y」のメソッド「MY」への参照が呼出されるメソッドに対するパラメータとしてパスされているメソッド呼出しを見つけると、呼出されメソッドがオブジェクトへの参照を受取ることを期待している場合で、且つそのオブジェクトが単一のメソッド「MX」を定義するインターフェース「X」をインプリメントするクラスのインスタンスである場合には、該コンパイラは以下の決定を行う。
上述した場合においては、該コンパイラはメソッド「MY」の「シグネチャ(signature)」がメソッド「MX」の「シグネチャ」と互換性があるか否かを決定する。本発明の1実施例においては、メソッド「MY」のシグネチャがメソッド「MX」のシグネチャの「サブシグネチャ(subsignature)」である場合に、メソッド「MY」のシグネチャはメソッド「MX」のシグネチャと互換性があるものと考えられる。シグネチャ及びサブシグネチャについては後の「シグネチャ」と題名の付けたセクションにおいて簡単に説明する。
メソッド「MY」のシグネチャがメソッド「MX」のシグネチャと互換性があるものと該コンパイラが決定する場合には、本発明の1実施例においては、該ソースコードにおいて、該メソッド呼出しを包含する「アウタークラス(outer class)」が以下の形を有する「インナークラス(inner class)」を包含している場合に発生されるようなバイトコードを該コンパイラが発生する(尚、「Z」はメソッド「MX」の戻り型であり、例えば「void」である)。
Figure 0005165234
要するに、該コンパイラは、上のコードに対応するバイトコードを発生することにより新たな「ブリッジ」クラスを自動的に作成する。メソッド呼出しにおけるパラメータとしてパスされる各対応するメソッド参照に対して別個の「ブリッジ」クラスを作成することが可能である。クラス名「Boxer」は、例としてのみ使用され、本発明の実施例は、メソッド呼出しにおけるパラメータとしてパスされる各異なるメソッド参照に対して異なるクラス名を使用することが可能である.例えば、第一メソッド呼出しが「fredClicked」という名前のメソッドへの参照をパスする場合には、対応する「ブリッジ」クラスは「fredClickedBoxer」と名前を付けることが可能である。第二メソッド呼出しが「burtClicked」という名前のメソッドへの参照をパスする場合には、対応する「ブリッジ」クラスは「burtClickedBoxer」と名前を付けることが可能である。
本発明の1実施例によれば、上述したようなバイトコードを発生することに加えて、該コンパイラは、又、ソースコードにおける「addActionListener(MY)」の形を有する各メソッド呼出しを「addActionListener(new Boxer(this))」の形を有する代替的メソッド呼出しに対してマップさせる。例えば、そうでない場合にはコンパイラがオリジナルのメソッド呼出しに対応するバイトコードを発生していた場合に、該コンパイラは代替的メソッド呼出しに対応するバイトコードを発生することによりこのマッピングを発生する場合がある。このマッピングの結果として、メソッド「MY」への参照をパスしたメソッド呼出しは、その代わりに、自動的に発生される「ブリッジ」クラスのインスタンスであるオブジェクトへの参照をパスするように実効的になされる。
図1はオリジナルのソースコード及び対応する仮定の代替的コードの例を例示する模式図であり、それに基づいて、コンパイラは上述した本発明の1実施例に基づいてバイトコードを発生する。ボックス102はプログラマがコンパイルすべきソースコード内に元々記入するコードを包含している。理解することが可能であるように、ボックス102内のボックス106はメソッド「addActionListener」の呼出しを包含しており、その中に、オブジェクトへの参照が期待される場合に、メソッド「MY」への参照がパスされる。
本発明の1実施例によれば、コンパイラがボックス102内のソースコードに基づいてバイトコードを発生する場合に、該バイトコードは、その代わりにボックス104内の仮定の代替的コードに基づいてコンパイラがバイトコードを発生する場合に発生されるようなバイトコードと機能的に等価である。ボックス104内のコードは、2,3の変更があるがボックス102内のコードと類似している。クラス「Y」内に、「ブリッジ」クラス「MYBoxer」が挿入されている。クラス「MYBoxer」はインターフェース「X」をインプリメントする。何故ならば、該コンパイラは、メソッド「addActionListener」がインターフェース「X」をインプリメントするクラスのインスタンスであるオブジェクトを期待することを決定するからである。クラス「MYBoxer」はコンストラクターメソッド(メソッド「MYBoxer」)及びインターフェース「X」により定義されるメソッド「MX」を有している。
メソッド「MX」はクラス「Y」のメソッド「MY」と同一の戻り型及び引き数を有している。メソッド「MX」は、メソッド「MX」が呼出される場合に、メソッド「MX」がメソッド「MX」へパスされたのと同一のパラメータでメソッド「MY」を呼出すようにインプリメントされる。
付加的に、ボックス102におけるメソッド呼出し106の代わりに、ボックス104は、メソッド「addActionListener」を呼出す改定されたメソッド呼出し110を包含しており、ボックス108内に示されている新たな「MYBoxer」クラスのインスタンスであるオブジェクトをパスする。
実行されると、ボックス102におけるコードのコンパイレーションから得られるバイトコードは、ボックス104におけるコードのコンパイレーションから得られるバイトコードが有するものと同一の効果を有している。然しながら、ボックス102におけるソースコードはボックス104におけるコードよりも一層簡潔且つ簡明である。ボックス102に示した構文を使用することはプログラマの時間及び努力を節約する。
図2は、別のメソッドへの参照がパラメータとしてパスされるメソッドの呼出しを包含するソースコードに基づくバイトコードを発生するための技法200の1例を例示するフローチャートである。例えば、技法200は図3に例示した装置のようなコンピュータ上で実行するJAVAコンパイラにより実施することが可能である。技法200は、ソースコードのコンパイレーション期間中に複数回実施することが可能である。
ブロック202において、コンパイル中のソースコード内においてメソッド呼出しが検知される。例えば、該コンパイラは図1のボックス106に示したようなメソッド呼出し「fred.addActionListener(MY)」を検知することが可能である。
ブロック204において、メソッド呼出しを検知することに応答して、呼出されるメソッドへのパラメータとしてパスされる参照がオブジェクトへの参照又は特定のメソッドへの参照であるか否かが決定される。例えば、該コンパイラは、「MY」がオブジェクトへの参照か又はメソッドであるか否かを決定することが可能である。その参照がオブジェクト参照である場合には、制御はブロック206へパスする。そうでない場合には、制御はブロック208へパスする。
ブロック206において、メソッド呼出しが呼出されるメソッドへのパラメータとしてパスされるオブジェクト参照が関与する場合には、コンパイレーションは通常の如くに進行する。該コンパイラは、メソッド呼出しに相応したバイトコードを発生することが可能である。
一方、ブロック208において、特別バイトコードが発生される。この特別バイトコードは、そのメソッド呼出しを包含するクラスが、付加的に、上述した如く「ブリッジ」クラス及び改定したメソッド呼出しを包含している場合に発生されるようなバイトコードと同一である。本発明の1実施例においては、特別バイトコードを発生することは、コンパイラが既に発生したバイトコードを修正することが関与する。本発明の1実施例においては、特別バイトコードを発生することは、以下のブロック210−216内に記載されるオペレーションが関与する。
ブロック210において、メソッド呼出し(上のブロック202において検知)において呼出されるメソッドにより期待されるオブジェクトのクラスによってインプリメントされるインターフェースが決定される。例えば、メソッド「addActionListener」がインターフェース「X」をインプリメントするクラスのインスタンスであるオブジェクトを受取ることを期待することを該コンパイラが決定することが可能である。
ブロック212において、新たな「ブリッジ」クラスに対応するバイトコードが発生される。この新たな「ブリッジ」クラスは、上のブロック210において決定されたインターフェースをインプリメントする。例えば、該コンパイラは図1のボックス108に示したクラス「MYBoxer」に対応するバイトコードを発生することが可能である。本発明の1実施例においては、新たな「ブリッジ」クラスに対応するバイトコードを発生することは、下のブロック214に記載されるオペレーションが関与する。
ブロック214において、新たなメソッドに対応するバイトコードが発生される。この新たなメソッドはインターフェース「X」により定義される単一のメソッド「MX」である。この新たなメソッドは、その新たなメソッドが呼出される場合に、その新たなメソッドがそのメソッド呼出しにおいて呼出されるメソッド(「addActionListener」)へパスされるメソッド参照に対応するメソッド「MY」を呼出すような態様で、且つその新たなメソッドを呼出すために使用されるものと同一のパラメータ(例えば、「evt of type ActionEvent」)でインプリメントされる。例えば、該コンパイラは図1のボックス108に示したメソッド「MX」に対応するバイトコードを発生することが可能である。
ブロック216において、そのメソッド呼出しは新たな改定されたメソッド呼出しへマップされる。本発明の1実施例によれば、このマッピングはバイトコードがその代わりに改定されたメソッド呼出しのオペレーションを反映するように、該コンパイラーがオリジナルのメソッド呼出し(「fred.addActionListener(MY)」)に対して発生するバイトコードを修正することが関与する。その改定されたメソッド呼出しは、オリジナルのメソッド呼出しにおいて呼出したメソッドに対してパスされるメソッド参照(メソッド「MY」への)の代わりに新たな「ブリッジ」クラス(「MYBoxer」)のインスタンスであるオブジェクトへの参照を呼出したメソッド(「addActionListener」)へパスする。例えば、コンパイラーは、そのバイトコードがその代わりに図1のボックス110の改定したメソッド呼出しを反映するように、図1のボックス106のメソッド呼出しに対応するバイトコードを改訂することが可能である。
ブロック218において、コンパイレーションは通常の通りに進行する。コンパイラは、コンパイル中のソースコードの残部に基づいてバイトコードの発生を継続することが可能である。
本発明の1実施例においては、特別バイトコードが上述した如くに発生される前に、コンパイラは、メソッド「MY」のシグネチャが上述した如くにメソッド「MX」のシグネチャと互換性があるか否かを決定する。本発明の1実施例においては、メソッドシグネチャが非互換性である場合にコンパイラはエラーを発行する。
その他のオブジェクトへのメソッドへの参照のパス
上の説明において、オリジナルのメソッド呼出しが「現在の」オブジェクトのメソッドへ参照をパスしていた。例えば、図1のボックス106において、オリジナルのメソッド呼出し「fred.addActionListener(MY)」は、そのメソッド参照が明示的にいずれかのオブジェクトを指定するものではないので「現在の」オブジェクトのメソッドをパスするものと仮定されている。そのメソッド参照がオブジェクト参照により資格が与えられるものでない場合には、そのメソッド参照は「現在の」オブジェクト「this」のメソッドを参照するものと仮定される。従って、ボックス106に示されるオリジナルのメソッド呼出しは等価的に「fred.addActionListener(this.MY)」と書くことが可能である。
然しながら、「現在の」オブジェクト以外の何等かのオブジェクトのメソッドへの参照をオリジナルのメソッド呼出しにおけるパラメータとしてパスするソースコードを書くことが望ましい場合がある。例えば、両方がクラス「Y」のインスタンスである2つのオブジェクトが存在する場合がある。1つのオブジェクトは「jack」と名前が付けられている場合があり且つ他方のオブジェクトは「burt」と名前が付けられている場合がある。各オブジェクトが現在のオブジェクト自身のメソッド「MY」への参照ではなくオブジェクト「jack」のメソッド「MY」への参照を「addActionListener」メソッド呼出しにおいてパスすることをプログラマが所望する場合には、そのプログラマは、代替的に、
fred.addActionListener(jack.MY)
のようにボックス106に示したオリジナルのメソッド呼出しをコード化する場合がある。
本発明の1実施例によれば、改定されたメソッド呼出し(例えば、図1のボックス110に示した改定されたメソッド呼出し)は、オリジナルのメソッド呼出しにおけるパラメータとしてパスされたメソッド参照に資格を付与するオブジェクト参照を明示的に表示する。例えば、メソッド参照「MY」が上の例において説明したようなオブジェクト参照「jack」で資格が付与される場合には、対応する改定されたメソッド呼出しは、
fred.addActionListener(new MYBoxer(jack))
である。
従って、本発明の1実施例によれば、オリジナルのメソッド呼出しが特定のオブジェクト参照により明示的に資格が付与されることのないメソッド参照をパスする場合には、対応する改定されたメソッド呼出しが「ブリッジ」クラスのコンストラクタメソッドをして暗示的なオブジェクト修飾子「this」を使用して呼出させるが、オリジナルのメソッド呼出しが特定のオブジェクト参照により資格が付与されるメソッド参照をパスさせる場合には、対応する改定されたメソッド呼出しは「ブリッジ」クラスのコントラクタメソッドをしてその代わりに特定のオブジェクト参照を使用して呼出させる(例えば、「jack」)。
シグネチャ
本発明の1実施例によれば、特定のメソッドのシグネチャは特定のメソッドの名前、特定のメソッドの仮パラメータの引き数型、及びその特定のメソッドの型パラメータの境界を包含している。本発明の1実施例によれば、2つのメソッドが同一の名前及び同一の引き数型を有している場合にはそれら2つのメソッドは同一のシグネチャを有している。本発明の1実施例によれば、以下の全てが真である場合には2つのメソッドは同一の引き数型を有している。
・それらのメソッドが同数の仮パラメータを有している(それはゼロである場合がある)。
・それらのメソッドは同数の型パラメータを有している(それはゼロである場合がある)。
・<A1,...AN>を1つのメソッドの仮型パラメータとし且つ<B1,...BN>を他方のメソッドの仮型パラメータとして、1乃至Nのiの全ての値に対しBiをAiへリネーミング(renaming)した後に、それらのメソッドの対応する型変数の境界及び引き数型が同じである。
「MX」が「MY」と同一のシグネチャを有しているか、又は「MY」のシグネチャが「MX」のシグネチャの消去と同一である場合には、メソッド「MY」のシグネチャはメソッド「MX」のシグネチャの「サブシグネチャ」である。
ハードウエア概観
図3は本発明の1実施例をインクリメントすることが可能なコンピュータシステム300を例示したブロック図である。コンピュータシステム300は、情報交換を容易化するためのバス302と、情報を処理するためにバス302と結合されている1つ又はそれ以上のプロセッサ304とを包含している。コンピュータシステム300は、又、プロセッサ304により実行されるべき情報及び命令を格納するためにバス302へ結合されているランダムアクセスメモリ(RAM)又はその他の動的格納装置等のメインメモリ306を包含している。メインメモリ306は、又、プロセッサ304による命令の実行期間中に一時的な変数又はその他の中間情報を格納するために使用することが可能である。コンピュータシステム300は、更に、プロセッサ304に対する静的情報及び命令を格納するためにバス302へ結合されている読取専用メモリ(ROM)308又はその他の静的格納装置を包含することが可能である。磁気ディスク又は光学ディスク等の格納装置310が設けられており且つ情報及び命令を格納するためにバス302へ結合されている。
コンピュータシステム300はコンピュータユーザに対して情報を表示するために陰極線管(CRT)等のディスプレイ311へバス302を介して結合させることが可能である。英文字及びその他のキーを包含する入力装置314が情報及びコマンド選択をプロセッサ304へ通信するためにバス302へ結合されている。別のタイプのユーザ入力装置はプロセッサ304に対して方向情報及びコマンド選択を通信し且つディスプレイ312上のカーソルの動きを制御するためのマウス、トラックボール、又はカーソル方向器等のカーソル制御316である。この入力装置は、典型的に、該装置が面内における位置を特定することを可能とする第一軸(例えば、x)及び第二軸(例えば、y)の2つの軸における2つの自由度を有している。
コンピュータシステム300において、バス302は種々のコンポーネント間において、情報、信号データ等を交換させることを可能とする任意のメカニズム及び/又は媒体とすることが可能である。例えば、バス302は電気的信号を担持する1組の導体とすることが可能である。バス302は、又、該コンポーネントのうちの1つ又はそれ以上の間でワイヤレス信号を担持するワイヤレス媒体(例えば、空気)とすることが可能である。バス302は、又、該コンポーネントのうちの1つ又はそれ以上の間で容量的に信号を交換することを可能とする媒体(例えば、空気)とすることが可能である。バス302は、更に、該コンポーネントのうちの1つ又はそれ以上を接続するネットワーク接続とすることが可能である。全体的に、種々のコンポーネント間において情報、信号、データ等を交換することを可能とする任意のメカニズム及び/又は媒体をバス302として使用することが可能である。
バス302は、又、これらのメカニズム/媒体の結合とすることが可能である。例えば、プロセッサ304はワイヤレスによって格納装置310と通信することが可能である。このような場合には、バス302は、プロセッサ304及び格納装置310の観点からは、空気等のワイヤレス媒体である。更に、プロセッサ304は容量的にROM308と通信することが可能である。この場合には、バス302はこの容量的通信を行うことを可能とする媒体(例えば空気)である。更に、プロセッサ304はネットワーク接続を介してメインメモリ306と通信することが可能である。この場合には、バス302はネットワーク接続である。更に、プロセッサ304は1組の導体を介してディスプレイ312と通信することが可能である。この場合には、バス302は該1組の導体である。従って、どのようにして種々のコンポーネントが互いに通信するかに依存して、バス302は異なる形態を取ることが可能である。バス302は、図3に示したように、種々のコンポーネント間において情報、信号、データ等を交換することを可能とするメカニズム及び/又は媒体の全てを機能的に表わしている。
本発明はここに記載した技法をインプリメントするためのコンピュータシステム300の使用に関連している。本発明の1実施例によれば、これらの技法はメインメモリ306内に包含されている1つ又はそれ以上の命令の1つ又はそれ以上のシーケンスを実行するプロセッサ304に応答してコンピュータシステム300により実施される。これらの命令は格納装置310等の別のマシンにより読取可能な媒体からメインメモリ306内に読込むことが可能である。メインメモリ306内に包含されている命令からなるシーケンスの実行は、プロセッサ304をしてここに記載した処理ステップを実施させる。別の実施例においては、本発明をインプリメントするためのソフトウエア命令の代わりに又はそれと組合わせてハードワイアード回路を使用することが可能である。従って、本発明の実施例はハードウエア回路とソフトウエアとのいずれかの特定の結合に制限されるものではない。
ここで使用する「マシンにより読取可能な媒体」という用語は、マシンをして特定の態様で動作させるデータを供給する場合に参加する任意の媒体のことを意味している。コンピュータシステム300を使用してインプリメントされる実施例において、種々のマシンにより読取可能な媒体が、例えば、実行のためにプロセッサ304へ命令を供給する場合に関与する。このような媒体は、これらに制限されるものではないが、非揮発性媒体、揮発性媒体、伝送媒体を包含する多くの形態をとることが可能である。非揮発性媒体は、例えば、格納装置310等の光学的又は磁気的ディスクを包含している。揮発性媒体は、メインメモリ306等のダイナミックメモリを包含している。伝送媒体は、バス302を有するワイヤを包含して、同軸ケーブル、銅ワイヤー及びオプティカルファイバーを包含している。伝送媒体は、又、電波及び赤外線データ通信期間中に発生されるものなどの音波又は光波の形態をとることが可能である。本発明の1実施例によれば、上述した伝送媒体はタンジブル(即ち、「実質的に実際の」)媒体である。
マシンにより読取可能な媒体の一般的な形態は、例えば、フロッピィディスク、フレキシブルディスク、ハードディスク、磁気テープ、又はいずれかのその他の磁気媒体、CD−ROM、何等かのその他の光学的媒体、パンチカード、ペーパーテープ、孔のパターンを具備する何等かのその他の物理的媒体、RAM、PROM、EPROM、フラッシュEPROM、何等かのその他のメモリチップ又はカートリッジ、以後記載するような搬送波、又はコンピュータがそれから読取ることが可能な任意のその他の媒体を包含している。
種々の形態のマシンにより読取可能な媒体は、実行のためにプロセッサ304に対し1つ又はそれ以上の命令からなる1つ又はそれ以上のシーケンスを担持する場合に関与する場合がある。例えば、該命令は、初期的に、遠隔コンピュータの磁気ディスク上に担持されている場合がある。該遠隔コンピュータは該命令をそのダイナミックメモリ内にロードさせ且つ該命令をモデムを使用して電話線を介して送信することが可能である。コンピュータシステム300に対して局所的なモデムは電話線上のデータを受取り且つ赤外線送信器を使用して該データを赤外線信号へ変換させることが可能である。赤外線検知器は該赤外線信号内に担持されているデータを受信することが可能であり、且つ適宜の回路が該データをバス302上に配置させることが可能である。バス302はメインメモリ306へのデータを担持し、それからプロセッサ304は該命令を検索し且つ実行する。メインメモリ306により受取られる命令は、オプションとして、プロセッサ304による実行の前又は後のいずれかにおいて格納装置310上に格納させることが可能である。
コンピュータシステム300は、又、バス302へ結合されている通信インターフェース318を包含している。通信インターフェース318はローカルネットワーク322へ接続されているネットワークリンク320へ結合させる二方向データ通信を提供する。例えば、通信インターフェース318は対応するタイプの電話線に対してデータ通信接続を提供するための統合デジタルネットワーク(ISDN)カード又はモデムとすることが可能である。別の例として、通信インターフェース318は互換性のあるLANへのデータ通信接続を提供するローカルエリアネットワーク(LAN)とすることが可能である。ワイヤレスリンクをインプリメントすることも可能である。いずれかのこのようなインプリメンテーションにおいて、通信インターフェース318は種々のタイプの情報を表わすデジタルデータストリームを担持する電気的、電磁的又は光学的信号を送信し且つ受信する。
ネットワークリンク320は、典型的に、その他のデータ装置に対し1つ又はそれ以上のネットワークを介してデータ通信を提供する。例えば、ネットワークリンク320はローカルネットワーク322を介してホストコンピュータ324に対し又はインターネットサービスプロバイダ(ISP)326により操作されるデータ装置への接続を与えることが可能である。ISP326は現在一般的に「インターネット」328として呼称されているワールドワイドパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク322及びインターネット328は、両方共、デジタルデータストリームを担持する電気的、電磁的又は光学的信号を使用する。コンピュータシステム300への及びそれからのデジタルデータを担持している種々のネットワークを介しての信号及びネットワークリンク320上及び通信インターフェース318を介しての信号は、情報を輸送する搬送波の例示的な形態である。
コンピュータシステム300はネットワーク、ネットワークリンク320及び通信インターフェース318を介してメッセージ及びプログラムコードを包含するデータを送信し且つ受信することが可能である。インターネットの例においては、サーバー320はインターネット328、ISP326、ローカルネットワーク322及び通信インターフェース318を介してアプリケーションプログラムに対する要求されたコードを送信する場合がある。
受信されたコードはそれが受信されるとプロセッサ304により実行することが可能であり、及び/又は後に実行するために格納装置310又はその他の非揮発性格納部内に格納することが可能である。このように、コンピュータシステム300は搬送波の形態でアプリケーションコードを得ることが可能である。
前述した説明において、本発明の実施例をインプリメンテーション毎に異なる場合がある多数の特定の詳細を参照して説明した。従って、何が発明であるか及び出願人により発明であるとして意図されているものが何であるか、の唯一且つ排他的な指標はこの出願から発行される1組の特許請求の範囲であって、このような特許請求の範囲が発行される特定の形態において、全てのその後の補正を包含して発行される特許請求の範囲である。このような特許請求の範囲に包含される用語に対してここで明示的に記載される明示的な定義は特許請求の範囲に使用されるそのような用語の意味を支配する。従って、請求項において明示的に記載されていない限定、要素、特性、特徴、利点又は属性は如何なる態様でもこのような請求項の範囲を制限すべきものではない。従って、本明細書及び図面は制限的な意味ではなく例示的なものとしてみなされるべきである。
オリジナルのソースコード及び本発明の1実施例に従ってそれに基づいてコンパイラがバイトコードを発生するような対応する仮定的代替的コードの例を例示した模式図。 それに対して別のメソッドへの参照がパラメータとしてパスされる1つのメソッドの呼出しを包含するソースコードに基づいてバイトコードを発生するための技法の1例を例示したフローチャート。 本発明のある実施例をインプリメントさせることが可能な例示的コンピュータ実体のハードウエアブロック図。

Claims (22)

  1. プログラムコードを発生するためのマシンで実現される方法において、
    ソースコード内において、メソッド呼出しにおいて呼び出されている第一プログラムメソッドに対するパラメータとしてパスされる特定の参照を見つけ、
    該参照を見つけることに応答して、該特定の参照が第二プログラムメソッドに対する参照であるか否かを決定し、
    該特定の参照が該第二プログラムメソッドに対する参照であることの決定に応答して、
    前記メソッド呼出しにおいて呼び出された前記第一プログラムメソッドにより期待されるオブジェクトのクラスによりインプリメントされるインターフェースを決定し、
    前記インターフェースをインプリメントする新たなブリッジクラスに対応するバイトコードを生成し、
    前記メソッド呼出しを、前記第二プログラムメソッドに対する参照の代わりに、前記ブリッジクラスのオブジェクトへの参照をパスするメソッド呼出しへマッピングする
    ことを包含している方法。
  2. 請求項1において、前記バイトコードが、該ソースコードが該クラスの定義を有している場合に自動的にコンパイラにより発生されるコンパイルされたコードであり、該ソースコードは該クラスの定義を有するものでない方法。
  3. 請求項1において、該ソースコードがJAVAプログラミング言語で書かれている方法。
  4. 請求項において、該第一プログラムメソッドが該第二プログラムメソッドに対応するイベントリスナーを登録するメソッドである方法。
  5. 請求項1において、該第二プログラムメソッドが、特定したオブジェクトに対する特定したイベント型のイベントの発生に応答して自動的に呼び出されるイベント処理メソッドである方法。
  6. 請求項1において、前記バイトコードを生成することが以下の形のソースコードに基づいてコンパイラが発生するコンパイルされたコードを発生することを包含しており、その場合にCLASSNAMEはクラス名であり、PARAMETERLISTは(a)メソッドMYの1個又はそれ以上のパラメータ及び(b)該1個又はそれ以上のパラメータの型のリストであり、PARAMETERSは該1個又はそれ以上のパラメータのリストであり、Xはインターフェースであり、MXはインターフェースXにより定義されるメソッドであり、且つY及びZは型であ
    Figure 0005165234
    方法。
  7. 請求項において、該特定の参照を見つけることが、メソッド呼出しにおいて呼びされているメソッドに対するパラメータとしてメソッドMYに対する参照をパスするメソッド呼出しを見つけ出すことを包含している方法。
  8. 請求項において、XはメソッドMXを定義するインターフェースであり、且つ該特定の参照を見つけることが、インターフェースXをインプリメントするクラスのインスタンスであるオブジェクトに対する参照をパラメータとして受取ることを期待するメソッド呼出しを見つけることを包含している方法。
  9. 請求項において、更に、
    「OBJECTNAME.METHODNAME(MY)」の形のメソッド呼出しを「OBJECTNAME.METHODNAME(new CLASSNAME(this))」の形の代替的メソッド呼出しに対してマッピングする、
    ことを包含しており、その場合に、OBJECTNAMEはオブジェクトの名前であり且つMETHODNAMEはインターフェースXをインプリメントするクラスのインスタンスであるオブジェクトに対する参照をパラメータとして受取ることを期待するメソッドの名前である方法。
  10. 請求項1において、更に、
    「OBJECTNAME.METHODNAME(MY)」の形のメソッド呼出しを「
    OBJECTNAME.METHODNAME(new CLASSNAME(this
    ))」の形の代替的メソッド呼出しへマッピングする、
    ことを包含しており、その場合に、OBJECTNAMEはオブジェクトの名前であり、
    その場合に、METHODNAMEはクラスのインスタンスであるオブジェクトに対する
    参照をパラメータとして受取ることを期待するメソッドの名前であり、且つ
    その場合にCLASSNAMEは該第二プログラムメソッドを呼び出すメソッドをインプリメントするクラスの名前である方法。
  11. 請求項1において、前記バイトコードが、該ソースコードが該クラスの定義を有している場合にコンパイラにより自動的に発生されるコンパイルされたコードであり、その場合に該ソースコードは該クラスの定義を有するものではなく、その場合に該パラメータは特定のインターフェース型に対して定義されており、且つその場合に該クラスが該インターフェース型をインプリメントする方法。
  12. 命令の1つ又はそれ以上のシーケンスを担持するマシンにより読取可能な記憶媒体において、その命令は、1つ又はそれ以上のプロセッサにより実行される場合に、該1つ又はそれ以上のプロセッサをして、
    ソースコード内において、メソッド呼出しにおいて呼び出されている第一プログラムメソッドに対するパラメータとしてパスされる特定の参照を見つけ、
    該参照を見つけることに応答して、該特定の参照が第二プログラムメソッドに対する参照であるか否かを決定し、
    該特定の参照が該第二プログラムメソッドに対する参照であることの決定に応答して、
    前記メソッド呼出しにおいて呼び出された前記第一プログラムメソッドにより期待されるオブジェクトのクラスによりインプリメントされるインターフェースを決定し、
    前記インターフェースをインプリメントする新たなブリッジクラスに対応するバイトコードを生成し、
    前記メソッド呼出しを、前記第二プログラムメソッドに対する参照の代わりに、前記ブリッジクラスのオブジェクトへの参照をパスするメソッド呼出しへマッピングする
    ステップを実施するマシンにより読取可能な記憶媒体。
  13. 請求項12において、前記バイトコードが、該ソースコードが該クラスの定義を有している場合にコンパイラにより自動的に発生されるコンパイルされたコードであり、その場合に該ソースコードは該クラスの定義を有するものでないマシンにより読取可能な記憶媒体。
  14. 請求項12において、該ソースコードがJAVAプログラミング言語で書かれているマシンにより読取可能な記憶媒体。
  15. 請求項12において、該第一プログラムメソッドが該第二プログラムメソッドに対応するイベントリスナーを登録するメソッドであるマシンにより読取可能な記憶媒体。
  16. 請求項12において、該第二プログラムメソッドが特定したオブジェクトに対する特定したイベント型のイベントの発生に応答して自動的に呼び出されるイベント処理メソッドであるマシンにより読取可能な記憶媒体。
  17. 請求項12において、前記バイトコードを生成することが、以下の形のソースコードに基づいてコンパイラが発生するコンパイルされたコードを発生することを包含しており、その場合にCLASSNAMEはクラス名であり、PARAMETERLISTは、(a)メソッドMYの1つ又はそれ以上のパラメータ及び(b)該1つ又はそれ以上のパラメータの型のリストであり、PARAMETERSは該1つ又はそれ以上のパラメータのリストであり、Xはインターフェースであり、MXはインターフェースXにより定義されるメソッドであり、且つY及びZは型であ
    Figure 0005165234
    マシンにより読取可能な記憶媒体。
  18. 請求項17において、該特定の参照を見つけることが、メソッド呼出しにおいて呼出されるメソッドに対するパラメータとしてメソッドMYに対する参照をパスするメソッド呼出しを見つけることを包含しているマシンにより読取可能な記憶媒体。
  19. 請求項17において、XはメソッドMXを定義するインターフェースであり、且つ該特定の参照を見つけることが、インターフェースXをインプリメントするクラスのインスタンスであるオブジェクトへの参照をパラメータとして受取ることを期待するメソッド呼出しを見つけることを包含しているマシンにより読取可能な記憶媒体。
  20. 請求項17において、前記命令は、前記1つ又はそれ以上のプロセッサにより実行される場合に、前記1つ又はそれ以上のプロセッサをして付加的に、
    「OBJECTNAME.MEHTODNAME(MY)」の形のメソッド呼出しを「
    OBJECTNAME.METHODNAME(new CLASSNAME(this
    ))」の形の代替的メソッド呼出しへマッピングする、
    ステップを実施させ、
    その場合に、OBJECTNAMEはオブジェクトの名前であり且つMETHODNAMEはインターフェースXをインプリメントするクラスのインスタンスであるオブジェクトへの参照をパラメータとして受取ることを期待するメソッドの名前であるマシンにより読取可能な記憶媒体。
  21. 請求項12において、前記命令は、前記1つ又はそれ以上のプロセッサにより実行される場合に、前記1つ又はそれ以上のプロセッサをして付加的に、
    「OBJECTNAME.METHODNAME(MY)」の形のメソッド呼出しを「OBJECTNAME.METHODNAME(new CLASSNAME(this))」の形の代替的メソッド呼出しへマッピングする、
    ステップを実施させ、
    その場合にOBJECTNAMEはオブジェクトの名前であり、
    その場合にMETHODNAMEはクラスのインスタンスであるオブジェクトへの参照をパラメータとして受取ることを期待するメソッドの名前であり、且つ
    その場合にCLASSNAMEは該第二プログラムメソッドを呼出すメソッドをインプリメントするクラスの名前であるマシンにより読取可能な記憶媒体。
  22. 請求項12において、前記バイトコードが、該ソースコードが該クラスの定義を有している場合にコンパイラにより自動的に発生されるコンパイルされたコードであり、その場合に該ソースコードは該クラスの定義を有するものではなく、その場合に該パラメータは特定のインターフェース型を有するべく定義されており、且つその場合に該クラスは該インターフェース型をインプリメントするマシンにより読取可能な記憶媒体。
JP2006331172A 2005-11-09 2006-11-09 ジャバ言語におけるメソッド参照のサポート Active JP5165234B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/271424 2005-11-09
US11/271,424 US7802239B2 (en) 2005-11-09 2005-11-09 Supporting method references in the JAVA language

Publications (2)

Publication Number Publication Date
JP2007141248A JP2007141248A (ja) 2007-06-07
JP5165234B2 true JP5165234B2 (ja) 2013-03-21

Family

ID=37946036

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006331172A Active JP5165234B2 (ja) 2005-11-09 2006-11-09 ジャバ言語におけるメソッド参照のサポート

Country Status (3)

Country Link
US (1) US7802239B2 (ja)
EP (1) EP1785852A3 (ja)
JP (1) JP5165234B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601456B2 (en) * 2006-08-04 2013-12-03 Microsoft Corporation Software transactional protection of managed pointers
CN105893103A (zh) * 2014-11-26 2016-08-24 深圳他拍档电子商务有限公司 编译方法及其编译器
US11809839B2 (en) 2022-01-18 2023-11-07 Robert Lyden Computer language and code for application development and electronic and optical communication

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4875186A (en) * 1986-02-28 1989-10-17 Prime Computer, Inc. Peripheral emulation apparatus
US6167565A (en) * 1998-01-08 2000-12-26 Microsoft Corporation Method and system of custom marshaling of inter-language parameters
JP2000148460A (ja) * 1998-11-17 2000-05-30 Digital Vision Laboratories:Kk プログラム変換方法
US6647546B1 (en) * 2000-05-03 2003-11-11 Sun Microsystems, Inc. Avoiding gather and scatter when calling Fortran 77 code from Fortran 90 code
US7251594B2 (en) * 2001-12-21 2007-07-31 Hitachi, Ltd. Execution time modification of instruction emulation parameters
US7171652B2 (en) * 2002-12-06 2007-01-30 Ricoh Company, Ltd. Software development environment with design specification verification tool
US7207032B1 (en) * 2003-03-28 2007-04-17 Applied Micro Circuits Corporation Expanding a software program by insertion of statements
JP4652680B2 (ja) * 2003-12-22 2011-03-16 パナソニック株式会社 コンパイル方法および装置、ならびにコンパイラ
US20050198624A1 (en) * 2004-03-02 2005-09-08 Chipman Timothy W. Method and system for program transformation
US7367019B2 (en) * 2004-09-16 2008-04-29 International Business Machines Corporation Parameter management using compiler directives
US7500230B2 (en) * 2005-03-25 2009-03-03 Microsoft Corporation Raising native software code

Also Published As

Publication number Publication date
US7802239B2 (en) 2010-09-21
EP1785852A3 (en) 2007-12-26
JP2007141248A (ja) 2007-06-07
US20100169869A1 (en) 2010-07-01
EP1785852A2 (en) 2007-05-16

Similar Documents

Publication Publication Date Title
KR101795844B1 (ko) 런타임 시스템
US11599346B2 (en) Accessing a migrated member in an updated type
US8739190B2 (en) Determining an extension to use to process an input object to a call in a program
US7669184B2 (en) Introspection support for local and anonymous classes
JP5044139B2 (ja) 移行互換性を維持したままのジェネリック型の具体化
US10083014B2 (en) Generating dynamic modular proxies
US20190034178A1 (en) Compiling non-native constants
US20050172300A1 (en) System and method for transferring computer-readable objects across a remote boundary
US10310827B2 (en) Flow-based scoping
JP5845221B2 (ja) 高速パッチベースメソッドコール
CN103853535A (zh) 修改中间件的方法和装置
US7735070B2 (en) Allowing non-generified methods to override generified methods
US6951022B1 (en) Delegate-based event handling
JP5165234B2 (ja) ジャバ言語におけるメソッド参照のサポート
US20180081648A1 (en) Producing an internal representation of a type based on the type's source representation
US10394610B2 (en) Managing split packages in a module system
US7526752B1 (en) Introspection support for generic types
US20090144752A1 (en) Unmanaged-to-managed aggregation
US6904516B2 (en) Mechanism for enabling efficient execution of an instruction

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091109

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110113

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121030

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121219

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151228

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5165234

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250