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

[jfriends-ml 12719] 議事録「 Java 言語仕様第 3 版」を読む会(第 5 回)



高橋(徹)です。

2007年8月18日(土)に開催された、Java読書会「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 フィールド(定数)宣言から

--
TAKAHASHI,Toru
torutk@xxxxxxxxxxxx