[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12339] Re: ズームイン Java(6/10) の予習について



高橋(徹)です。

   ""TAKAHASHI, Tomohiro" <t_takahashi@xxxxxxxxxxxxxx>"さんは書きまし
た:

> snip
> > ネストクラスについて、著者はとくに無名クラスの使用に否定的です。
> > 僕個人はAWT/Swingのリスナーの実装には無名クラスが適していると
> > 思っていますが、皆さんいかがでしょう?
> 
>   無名クラス、私も肯定的ですが、でも各種IDEやUMLツールなどとの連携を
> 考えると、無名クラスは避けたほうが無難な場合もあるかなぁ、と思ってお
> ります。
EclipseのVisual Editorで生成されるコードを見ると、無名クラスでGUIイベ
ントを処理するコードとなっていました。この生成は好みと合います。

NetBeansも無名クラスですが、UIクラスにprivateなメソッドを追加しこれを
呼び出すコードが自動生成されます。プログラマにはそのprivateメソッドに
実際のロジックを記述させる仕組みです。

また、無名クラスについては、「クロージャ」的使い方もあります。
クロージャに詳しいわけではありませんが、少し調べてみた範囲では
リスナーの実装もクロージャ的な使い方に該当するように思えます。

http://capsctrl.que.jp/kdmsnr/wiki/bliki/?Closure

Javaの無名クラスについては真のクロージャとは言えないとかコードが長くな
るとかの異論もあるようですが、いずれもベター論(別な言語と比較して、
どちらがよりよいかというレベル)でしかないように思われます。

>   なお、Errataのページを見ますと、以下のような訂正が載っています。
>   どのような理由から訂正したのだろうか? という疑問があります。
> ----------------------------------------------------------------------------
---
> (143) Last paragraph before Example 6-7
> The text
> Since the syntax of anonymous classes is not considered to be mainstream 
Java
> syntax, anonymous classes are difficult to read and are often misunderstood.
「主流ではない」は言い過ぎでしょう、最初この文章読んでそう思いました。
そしたらErrataでは「激しく違う」と少し穏健な(?)表現に修正されていまし
た。

> Should read
> Since the syntax of anonymous class declaration is so radically different 
>>from 
> the normal Java syntax, anonymous classes are difficult to read and are 
often
> misunderstood.
> ----------------------------------------------------------------------------

この著者は、pp.147-148に2ページかけて、いかに無名クラスがよろしくない
かを説いています。何か無名クラスで痛い目に合ったのでしょうか。

p.148で「無名クラスは全く再利用ができません」と断言していますが、
そんなことはありません。クラス(静的構造)としてはそう見えますが、
無名クラスを変数に格納すれば、その変数を何回も使うことはできます。


--
TAKAHASHI,Toru
torutk@xxxxxxxxxxxx