『Javaフレーム構築ベース』Javaベースから-汎用ベース


一.汎用の概要
1.1汎用由来
私たちの集合は多くのデータ型の要素を格納することができ、格納時には何の問題もありませんが、要素を取得し、下に移行すると、ClassCastExceptionというエラーが発生する可能性があります.明らかに、集合のこのような多種のデータ型を格納することができる要素のこの特徴は、あまり友好的ではなく、プログラムにはいくつかの安全上の危険が存在している.集合が同じデータ型の要素しか格納できないことをどのように限定しますか?汎用型が必要です.
1.2基本的な概要
  • は、タイプが明確な作業をオブジェクトの作成や呼び出し方法に遅らせて明確にする特殊なタイプです.パラメトリックタイプ、タイプをパラメータのように渡します.
  • 汎用的な出現は多くの強転操作を減少させ、同時に多くの実行時のエラーを回避し、コンパイル期間中に検査タイプ変換
  • を完成させる.
    1.3汎用型導入の目的
    汎用型を導入する動機を理解するには,まず文法糖から理解する.
    こうぶん糖(Syntactic Sugar)は、糖衣文法とも呼ばれ、イギリスのコンピュータ学者Peter.J.Landinによって発明された用語で、コンピュータ言語に追加された何らかの文法を指す.この文法は言語の機能に影響を与えないが、プログラマーが使用しやすい.Javaで最もよく使われる文法糖は主に汎用、変長パラメータ、条件コンパイル、自動梱包箱、内部類などがある.仮想マシンはこれらの構文をサポートしておらず、コンパイル段階で簡単な基礎構文構造に復元され、このプロセスは解語法糖になります.
    1.4汎用的な目的
    Java汎用型とは、汎用型によってコンパイル段階でいくつかのタイプ変換の作業を完了させ、実行時にタイプ変換を強制してClassCastException、すなわちタイプ変換異常が発生することを避ける文法糖である.
    二.汎型初歩的探索
    JDK 1.5では汎用型が追加され,その要素のデータ型を記憶できるように集合の使用が容易になった.
    汎用(Generic typeまたはGenerics)が現れる前に、このようにコードを書きます:ブログ
    public static void main(String[] args){
        List list = new ArrayList();
        list.add("123");
        list.add("456");
        System.out.println((String)list.get(0));
    }

    もちろんこれは完全に許可されています.リストの内容はObjectタイプなので、自然にどんなオブジェクトタイプでも入れることができ、取り出すことができますが、このように書くと2つの問題があります.
  • 集合にオブジェクトを入れると、集合はそのオブジェクトのタイプを記憶せず、再び集合からこのオブジェクトを取り出すと、そのオブジェクトのコンパイルタイプはObjectになります.
  • 実行時に人為的に特定の目標に変換する必要があるが、実際のプログラムは決して簡単ではなく、うっかりjavaが現れる.lang.ClassCastException.
  • だから、汎用型が現れた後、上のコードはよく知られている書き方に変わりました:
    public static void main(String[] args){
    List
    list = new ArrayList();
    list.add("123");
    list.add("456");
    System.out.println(list.get(0));
    }
    これが汎用型です.
  • 汎用はJava言語タイプシステムの拡張であり、C++のテンプレートに少し似ており、タイプパラメータをパラメトリックタイプを使用するときに指定されたタイプのプレースホルダと見なすことができる.汎用型の導入は、Java言語の大きな機能強化であり、多くのメリットをもたらしています.

  • 三.汎用フォーマット
    3.1汎用フォーマットは以下の通りである.
  • ここでのデータ型は参照データ型のみ


  • 四.汎用性のメリット
  • ①タイプは安全です.タイプエラーはコンパイル中にjavaとして実行するのではなく、キャプチャされました.lang.ClassCastExceptionは、タイプチェックを実行時からコンパイル時に移行することで、開発者がエラーを見つけやすくなり、プログラムの信頼性が向上することを示しています.
  • ②コード内の多くの強制型変換を排除し、コードの可読性を向上させる.
  • ③は大きな最適化を可能にした.プログラム設計を最適化し、黄色の警告線を解決しました.