読書会(Java言語仕様 第3版)第5回議事録

[ 戻る ]


出席者:高橋(智)、村山、村上、門脇、遠藤、松永、吉本、岩室、高橋(徹)
読み手:遠藤、村山、松永、門脇、吉本
書記:高橋(徹)

本日は、p.189から

p.192
Javaでは、Object型のtoString()を呼ぶ方法はないのか?
    C++なら、クラス名を指定してメソッドを呼ぶことができる
    Javaでは、superで直接の親クラスのメソッドしか呼べない
    Object.this のように記述したらいけるのではないか?
          innerクラスの場合にしか記述できない

p.193
Eclipseの内蔵コンパイラ(Jikes?)には、インライン展開するオプションがある
    【宿題】これをチェックしてコンパイルしたバイトコードを逆コンパイル
    したらどうなっているか調査する。

p.194
インライン展開後のコード
    一回 int jに代入しているのがミソ。引数の評価順序を保証している。
    Point piも同様。

nativeメソッドから例外をスローすることはできるのか
    ネイティブ側でオブジェクト
    【宿題】JNIでネイティブ側から例外を生成して投げるサンプルを作成

p.195 
Class.forName("BumpTest") は、BumpTest.classでもよいのでは?
    よいと思われる

p.197 誤植?
下から13行目 "ExceptionTypeList:" は、"ExceptionType:"の誤記
     洋書では"ExceptionType:"となっている
     訳者へ報告

p.198
例外をキャッチしないと、スレッドが死ぬ
    Swingだと例外が発生してもGUIとしては機能し続けている
        EDTスレッドが死んで新しいスレッドを生成している?
    スレッドにuncaughtExceptionHandlerを登録すれば死なせずに済む

p.199
「メソッド本体が正常終了(§14.1)」
    return文は正常終了を妨げる

p.201 誤植?
下から11行目、「(covariant retutn types),」は、"return"の誤記
     訳者へ報告

p.210-211
継承可能なクラスでオーバーライド可能なメソッドを明示的に示すアノテーションが
あってもいいのではないか?(例:@Overridable)
意図しないオーバーライドを防ぐ仕組みが何故Javaにないのか? 

p.212 2〜4行目の意味がわからない
サンプルコードは以下のようになる
interface Map {
  class Entry {...}
}
interface Set {
  class Entry {...}
}
class X implements Map, Set {
  void someMethod() {
    Entry e = ... // コンパイルエラー
  }
}

p.213
インスタンス変数初期化子はあまり使わないので…
    普通コンストラクタで初期化する
    まして、インスタンス変数初期化子で、thisやsuperは使ったことない

p.215
コンストラクタでFP-strictができない理由はなにか?
    superのコンストラクタを呼び出すときに、FP-strictにならないからか?
    → class全体がFP-strictのときは、コンストラクタもFP-strictになるという
     記述がある。

「コンストラクタが作業を完了するまで、ロックが行われる」とあるが、
コンストラクタで初期化したフィールドが他のスレッドで観測可能であることは保証
されるか?
    メモリモデルで議論しましょう

p.217
NonWildTypeArguments はどんなときに使うの?
    スーパークラスのコンストラクタはジェネリクスで、サブクラスがジェネリクス
    でない場合に、superを呼ぶときは必要になるのではないか。
    【宿題】明示的なコンストラクタの起動でNonWildTypeArgumentsを指定する
        コード例を捜すか作る

p.220 誤植
下から10行目、「packate p1;」は、「package p1;」の誤記
    訳者へ報告

p.226
「EnumSet 列挙型の要素が64を超えることはないという仮定から、、、」
 EnumSetの実装が、64bit整数のビットで表現されているから
 →JDK1.6では、列挙型の要素数が64を超えるか否かで、RegularEnumSet、JumboEnumSet
 を使い分けている。ので、64を超えても問題ない。

p.233
「暗黙のうちにabstractとなる。この修飾子は廃止されたため…」
原文ではobsoluted、互換性のための残っているんだろう。


次回、p.236 9.3 フィールド(定数)宣言から


[ 戻る ]