以下のメッセージを削除します。


[2020] Re:『Java謎+落とし穴徹底解明』の正誤について
返信


投稿者:(ぱ)こと管理人
2017/11/13 01:15:51

Link:
週末に返信と言っておきながら日付が変わってしまいました。
遅くなりまして申し訳ありません。

>p. 147 の英文で [emphasis is in the original text] とあるのが反映されていません。

英語版の方で強調部分が太字になっていないということですね。
正誤表に載せておきます。

>また、和訳の方で「どのオブジェクトも参照しない特殊なnull参照」に相当する英文がないです。

この「どのオブジェクトも参照しない特殊なnull参照」という文言は、
JLSには含まれていて、日本語部分はそこから持ってきています。
このFAQのオリジナルの文章をWayback Machineから発掘したところ
「are pointers to these objects."」までで止まっていますが、
JLSから引用するのに勝手に変えるわけにもいかずにこうしたのではないかと
思います(記憶の彼方ですが…)。
ここはこのままとさせてください。

>X-Draw のソースで DrawWindow.java の l. 110 -
>    public void mouseDown(int x, int y) {}
>    public void mouseUp(int x, int y) {}
>    public void mouseDrag(int x, int y) {}
>は不要と思われます。

本当ですね。この手の空メソッドはインタフェースにあるシグネチャのうち
不要なものについて書くのが普通ですが、それにしてもメソッド名から違うので、
なぜあるのか不明です。正誤表に載せておきます。

>あと、 l. 164 - 
>    public void resize(int width, int height) {
>        this.adjustBoundary();
>    }
>ですが、今後の拡張を見込んでこのようにされたのでしょうか。

このメソッドは普通に呼ばれていますし、試しに処理を抜いてみたら、
倍率の計算がされずに何も描かれないので、必要なのではないでしょうか。

> p.227 の interface Visitor の三つのシグネチャーの頭に void がいるかと。

その通りです。正誤表に載せておきます。

また、 p.228 の
>        v.visitPolyline(polyline);
>は実際には
>        v.visitPolyline(this);
>になるかと。

こちらもその通りです。正誤表に載せておきます。

>ただ、またいまごろきづいてしまいましたが、 p. 228 l. 7
>        visitPolyline(), visitCircle, visitRectangle 

こちらもその通りです。正誤表に載せておきます。

いろいろご指摘ありがとうございました。

>ちなみに、つぎのようにかきましたが、これで適当でしょうか。
>(Polyline たちから draw() を排除するかわりに getter を
>いれなければならなくなったのがどうも……。)

描画をPolyline等ではなくDrawVisitorで行うようにしたのですから、
DrawVisitorに対し中身を開示しなければ描画できないというのは、
まあ、しょうがないですよね。
実際問題として、PolylineのようなCでいうところの構造体的なクラスが
外部に中身を開示しないというのは無理があるのではないかなあ、と、
この例を見ても思います。

パスワード:

管理者削除