このページは「Java8ではじめるラムダ式」(清水美樹著、工学社刊、2014年7月11日発売、ISBN978-4-7775-1841-8)の著者によるサポートページです
本書のサンプルは、WIndowsでのコマンドプロンプトによるコンパイル・実行のための構造で提供しています(方法は本書中の「付録B」を御覧ください)。
そのため、Eclipseなど開発ツールでサンプルをそのまま実行するために最も効率的な方法は、プロジェクト及びファイルまでは自分で作って、内容をテキストとしてコピー・ペーストすることです。
特に、サンプルでは日本語の文字コードをShift_JISにしてあります。一方Eclipseなどは、UTF-8が初期設定です。しかし、テキストとしてコピー・ペーストすれば、文字コードの違いによる不具合は出て来ません。
そこで、このページではコピー・ペーストする方法を紹介します。
第2章のサンプル「HistoryPersonSort」のうち、「HistoryPerson.java」は、ラムダ式に直接関係ないので、まるまるサンプルをコピーペーストしてもよいかと思います。
その方法を解説します。
「HistoryPersonSort」というプロジェクトを普通に作ります(実は、プロジェクト名は何でも構いません。Eclipseだけの都合です)
作成したプロジェクト「HistoryPersonSort」に、クラス「HistoryPerson」のソースを作成します。
ここで、「package(パッケージ)」に「historypersonsort」と入力すれば、パッケージフォルダも同時に作成されます。
「name(名前)」には「HistoryPerson」と記入します。
Eclipseでは、ファイルを作成すると、それがエディタに開かれてアクティブ(選択状態)になります。ゆえに、図3までの作業を終了すると、エディタには「HistoryPerson.java」の内容が表示されています。ほとんど枠組みだけですね。
そこで、サンプルの「chap2/historypersonsort」フォルダの中から「HistoryPerson.java」を見つけて、テキストエディタで開きます。
図7は「サクラエディタ」で開いたところです。内容を全部選択し、「(クリップボードへの)コピー」を行ったところです。
そして、Eclipse上の「HistoryPerson.java」上にペーストします。図7では全文を「コピー」しましたから、図8でもパッケージ宣言もクラス名宣言も全部選択して「ペースト」です。
Eclipse上の「HistoryPerson.java」の内容が、そっくりそのまま図7の内容に置き換われば、コンパイル・エラーは起きないはずです。どうでしょうか。
プロジェクトに、ソースファイル「HistoryPersonSort.java」も追加します。こちらはラムダ式を使うので、最初から自分で打ってみるほうが勉強になりますが、サンプルで動作確認したいときは同じようにコピー・ペーストします。
プログラムを単純に実行するなら、ツールバー上の「実行」ボタンをクリックします。図10に赤枠で示したボタンです。
ただし、一度実行の形式を尋ねるウィンドウが現れます。「Java Application」を選んでください。
コマンド引数つきで実行するには、プロジェクトを右クリックして、出て来たメニューから「Run As(実行)」-「Run configuration...(実行の構成)」を選びます。
図14のようなウィンドウが出たら、以下のように操作します。
第3章で作成した「historypersonsort_methodref.HistoryPersonSort」及びそれが参照するクラス「historypersonsort_methodref.HistoryPerson」は、第2章で作成したプロジェクトとほとんど同じです。そこで、プロジェクトを複製して、パッケージ名を変更するのが簡単です。
Eclipseのプロジェクトを複製するには、プロジェクトのアイコンを右クリックして、図15のように「copy」を選びます。
次に、「パッケージ・エクスプローラー」のどこか空白の場所を右クリックして「ペースト」を選びます。
すると、複製するプロジェクトの名前を問うウィンドウが出ますので、「HistoryPersonSort_MethodRef」にします。
複製したプロジェクトのファイルは、複製前のファイルと同じ名前で最初は同じ内容ですから、どちらを編集するのか混乱します。筆者の場合、だいたい間違ったほうを編集する人生を送って来ました。みなさんはどうでしょうか。
そこで、今開いているファイルはみんな閉じて、エディタを空にします。
複製されたプロジェクトでは、パッケージ名も複製前のプロジェクトと同じです。
パッケージ名を変更するには、図18のように、「Refactor(リファクタリングをする)」- 「Rename(名前の変更)」を選びます。
すると、名前を変更することによりファイルがどう書き変わるか示されます。ここは自分で何か編集できるわけではなく、そのように書き換えてもらうかやめるかを決めるのみです。特に問題はないので「continue」をクリックします。
このようにして、パッケージ名が「historypersonsort_methodref」になったプロジェクト「HistoryPersonSort_MethodRef」の準備が整いました。
前のプロジェクトと混乱しないように、「HistoryPersonSort」プロジェクトのほうはパッケージ・エクスプローラー上で折り畳んでしまいます。
プロジェクトに新しいファイル「HistoryPersonCompareProvider」などを追加して、本書を実践するかまたはサンプルの内容をコピーペーストして、動作確認を行ってください。
第5章で作成した「HistoryPersonSearch」は、「HistoryPerson.java」を用いますが、実行クラス「HistoryPersonSearch」の内容はこれまでと異なります。そこで、プロジェクト及びパッケージを新しく作成し、ファイル「HistoryPerson.java」を他のプロジェクトからコピーして使うのが効率的です。
プロジェクト「HistoryPersonSearch」を新しく作成します。
作成したプロジェクトに、パッケージ「historypersonsearch」を作成します。
プロジェクト「HistoryPersonSort」の「HistoryPerson.java」を右クリックして、メニューから「コピー」を選びます。
プロジェクト「HistoryPersonSearch」の、パッケージ「historypersonsearch」を右クリックして、「ペースト」します。
これで、元のファイル「HistoryPerson.java」のパッケージ宣言のところは自動変換されます。ソースコードを確認してみましょう。
あとは、普通にファイルを作成し、本書を実践したりサンプルの内容をコピーペーストしたり、作業してください。