読者です 読者をやめる 読者になる 読者になる

Effective Javaを読んでいる㉖

Java

ジェネリクスを使おう

具象不可能型は配列を生成できない

DelayQueueってなに
→Delayedインターフェースを実装したクラスのみ格納できるキュー
→Delayedインターフェースを実装したクラスがオーバーライドしたgetDelayedメソッドの戻り値が0未満でないと、要素を取得できない
タイムアウトを設定して待機したりできる
APIを非同期で何回もよんで呼び出しと結果を管理するオブジェクトを突っ込んで云々みたいな?いまいちイメージがわかない
DelayQueue (Java Platform SE 7)

スカラー型への無検査キャストを抑制するよりは配列型への無検査キャストを抑制する方が、危険性は高いです。とは? java - What is a Scalar type and why is it riskier to suppress an unchecked cast to an array type than to a scalar type? - Stack Overflow ・EはObjectのサブクラスではない(EはObjectのサブクラスであるという話?)
・配列のキャストではコードが型安全かどうか保証するのが複雑になるから
いまいち理由としてはピンとこないけど↓の2人目の人が書いているサンプルコードはわかりやすい
配列自体が絶対に外から見えないようにするなら配列をキャストした方が安全な気はするけど http://stackoverflow.com/questions/14986765/what-is-a-scalar-type-and-why-is-it-riskier-to-suppress-an-unchecked-cast-to-an

まとめると以下のイメージ?
・Object型から総称型への配列のキャストは許可されている
・が、型そのものはObject型のままである
・外側から見た時、総称型のクラスを使用する際に、型変数には具体的な型を使用する
・総称型へキャストされた配列をクライアントが使用するとき、クライアントではその配列は「型引数に指定した配列」として使う(使いたくなる)。
・が、実態はObject型の配列であり、特定の型の配列に格納するとClassCastExceptionがスローされる

キャストについて − Java Solution − @IT