タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

Javaとgenericsに関するteracy_junkのブックマーク (3)

  • 型パラメーターへのキャストは絶対に行ってはいけない - にょきにょきブログ

    Java | 08:56通常、ジェネリクスで型指定されたコレクションには指定された型のインスタンスしか格納されない。例えば以下のコードで表される list には Integer クラスのインスタンスしか格納されない。 List list = new ArrayList(); 上記の list に対して以下のコードを書くとコンパイルエラーとなる。 list.add( "not a number" ); しかし、キャストを行うことでコンパイルエラーは回避できる。 list.add( (Integer)"not a number" ); このキャストでコンパイルエラーが回避できる性質を利用すると、ジェネリクスを用いた型安全性は脆くも崩壊する。上記コード例では Integer へキャストを行っていたが、この Integer を型パラメーターにし、型パラメーターへのキャストを行うことでジェネリクスを

  • Javaのinstanceof演算子 - とあるソフトウェア開発者のブログ

    Javaのinstanceof演算子に関するメモです。 instanceofの基 instanceof演算子の演算結果は、左辺のオブジェクトが以下の条件のどれかを満たす場合にtrueとなります。 右辺に指定したクラスのオブジェクトである。 右辺に指定したクラスのサブクラスのオブジェクトである。 右辺に指定したインターフェースの実装クラスである。 右辺に指定したインターフェースの実装クラスのサブクラスである。 instanceof演算子の演算結果がtrueになった場合、左辺のオブジェクトを右辺のクラスにキャストし、メンバにアクセスすることが可能です。 テスト用のコード import java.io.Serializable; public class InstanceOfTest1 { public static void main(String[] args) { /* * Number

    Javaのinstanceof演算子 - とあるソフトウェア開発者のブログ
    teracy_junk
    teracy_junk 2015/06/08
    こんなところで躓いていた…
  • Java総称型のワイルドカードを上手に使いこなすための勘所 - 達人プログラマーを目指して

    Java5以降では総称型(generics)がJava言語に導入されています。総称型自体は、最近の静的な型付けのプログラミング言語で珍しいことではなく、現在の最新版では.NETのC#やVisual Basicにも導入されています。一般的には総称型をサポートするクラスライブラリを自分で正しく定義することは非常にスキルがいるが、事前に定義されたクラスを使うだけであれば、それほど難しくないとされています。しかし、Java言語の総称型はエントリで説明するように特殊なところがあり、単に利用するだけでも他の言語に比べて遥かに難しいところがあるというのも事実です。特に総称型をパラメータ化する際に指定するワイルドカード型(List<? extends Serializable>など)の意味を正しく理解して使いこなすことは簡単なことではありません。その結果、昔のJDK1.4までのように型パラメーターのない

    Java総称型のワイルドカードを上手に使いこなすための勘所 - 達人プログラマーを目指して
  • 1