[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 12740] 議事録「 Java 言語仕様第 3 版を読む会(第 7 回)」
高橋(徹)です。議事録を送付します。
今回は宿題が多いので皆様ご協力をお願いします。
------
Java読書会「Java言語仕様 第3版」を読む会
出席者:高橋(智)、根本、山内、村山、遠藤、岩室、松永、高橋(徹)
読み手:全員(書記を除く)
本日は、p.281から
12.4 クラスやインタフェースの初期化
「クラスが実装しているインタフェースは初期化されない」、とあるが、なぜか。
Singletonで、本当にオンデマンドにするには内部クラスを使う
→ 【宿題】サンプル提示してね
→ Effective Javaにあるらしい
ロードはされるがリンクはされないことがあるのか?
→ロードとリンクはVM仕様でも明示的に分けられているのでありかと
→javaの-verbose:classオプションでロードされたクラスがログ出力される
【宿題】p.283のインタフェースのサンプルプログラムをバイトコードで見る
【宿題】p.287 下2行目「C++とは異なり、…代替規則を規定していない」
のC++の代替規則とはなにか?
→p.288のサンプルコードのC++版を作って試してみよう
誤植 p.289 下から11行目
「言語と特殊なやり取りを行うを行うAPI」
^^^^^^
【宿題】WeakReferenceとSoftReferenceの存在意義(違い)について解説をMLに投
稿せよ
なぜこれらのクラスが導入されたか?
どんなケースで役立つのか?
p.290
「finalizeをオーバーライドしたサブクラスが明示的にsuper.finalizeを呼び出
していない場合であっても、super.finalizeが強制的に呼び出されるようになる」
とはどういう意味か?
→Fooのサブクラスがfinalizeをオーバーライドしてsuper.finalizeを呼び忘れて
いても、 FooのfinalizedGuardianに記述することでFooのfinalize処理を記述す
ることができる
→Effective Javaを見よ(§6)
p.292 11行目
「Xを参照を観測するdiの後にあるすべての読み込みは、」
^^
→「の」かな? 原文参照のうえ、訳者へレポート
12.6
【宿題】System.gc()を無効にするJavaVMオプションは?
finalizerでリソース解放を記述するのはよくない(明示的に終了処理を呼ぶべ
き)が、セーフティネットとしてfinalizerにリソース解放する方法はある。
→ finalizeの呼び出し順序は不定なので、うかつに呼ぶと危険かも
13.1
【宿題】アノテーションを付けた要素(クラス、フィールド、メソッド)について
バイナリ表現(クラス形式)にどう属性として保存されるか?
→応用)デバッグコンパイルするとローカル変数名も保存されるが、どこに格納さ
れるか?
(雑談)昔のJDKはダウンロードできるの?
→Sunにアーカイブサイトがあって、マイナーバージョンもすべて揃っているらしい
13.4.6
例) 古いJDBCのインタフェースを実装したクラスを、新しいJDBC(JDK)の環境で
動かすことはできるが、コンパイルはエラーとなる(新しいJDBCでインタフェー
スにメソッドが追加されている)
13.4.11 transient
どうしてSwingはSerializableなのか?
→ JavaBean仕様だから
→ なぜBean仕様、なにが目的?
→ GUIビルダーで設計したGUI部品をシリアライズして保存するのが目的
→ 画面をネットワーク越しに渡せる(Jiniでそういう例があった)
13.4.13
「型パラメータの最初の境界」とは?
→ T extends A, B and C の場合、Aが最初の境界
TはAとして扱われ、必要に応じてB,Cが参照される
13.4.15
結果型とは?
→ 15.12.2.6を参照
13.4.17
classメソッドでfinalとする意味は?
→サブクラスで同名のメソッドを定義できない
13.4.18 nativeメソッド
「既存のnativeメソッドに対する型の変更による影響は、」とは?
13.4.21
【宿題】チェック例外を追加して既存バイナリと組合せて動作を試す
p.321
サンプルの、
class Cyclic extends Cyclic {}; // 循環定義
は、後の文でコンパイルエラーになると記述されている
class Cyclic extends Cyclic {}; // 循環定義、コンパイル時のエラー
と明記した方が分かりやすいのでは?
p.325
同一ブロックでのローカル変数は、ローカル変数によってシャドーイングされない
次回、p.329 14.7から