ジャワ議政石12枚

13241 ワード

ch 12-1 Genericsとは?

  • コンパイル時チェックタイプの機能(compile-tiletypecheck)
  • ArrayList<Integer> list = new ArrayList<Integer>();
    list.add(10) //OK.
    list.add("20") //ERROR
    //타입 체크가 강화됨. 지네릭스 덕분에
  • は、オブジェクトのタイプ安定性を向上する、変換の手間を低減する
  • である.

    ギネス世界記録の長所


    1.タイプ安定性の提供
    2.タイプチェックと変換を省略して、コードを簡潔にすることができます.
    (ClassCastException変換エラーを軽減)
    (実行時エラーをコンパイル時エラーに導入するにはどうすればいいですか?)

    ch 12-2型変数

  • クラスを作成するときは、オブジェクトタイプではなくタイプ変数(E)を使用します.
  • ch 12-3型変数の代入

  • オブジェクトを作成すると、実際のタイプ(Tv)がタイプ変数(E)
  • に置き換えられます.
    ArrayList<Tv> tvList = new ArrayList<Tv>();
  • 型変数ではなく実型変数を指定する場合は、変換型
  • を省略することができる.

    ch 12-4ギネス用語


    Box:Generic Class.”TのBoxまたは「T Box」と読みます.
    T:タイプ変数またはタイプパラメータ.(Tはタイプ文字)
    Box:オリジナルタイプ(オリジナルタイプ)

    ch 12-5ムカデ型過多型性

  • 参照変数と構造関数の代入タイプは一致する必要があります.
  • ArrayList<Tv> = new ArrayList<Tv>(); //OK. 일치
    ArrayList<Product> = new ArrayList<Tv>(); //에러. 불일
  • ギネス世界記録類間の多形性は成立している.
  • List<Tv> list = new ArrayList<Tv>(); //OK. 다형성
    List<Tv> list = new LinkedList<Tv>(); //OK. 다형성
  • パラメータの多形性も
  • に成立する.
    ArrayList<Product> = new ArrayList<Product>();
    list.add(new Product());
    list.add(new Tv()); //자손도 OK
    list.add(new Audio()); //자손도 OK

    ch12-7 Iterator

  • クラスを作成する場合、オブジェクトタイプ
  • の代わりにTのようなタイプ変数を使用します.

    ch12-8 HashMap<K,V>

  • の複数のタイプの変数が必要な場合は、カンマ(,)は区切り記号
  • として宣言されます.
    HashMap<String, Student> map = new HashMap<String, Student>(); //생성
    map.put("자바왕", new Student("자바왕",1,1,100,100,100)); //데이터 저장

    ch 12-9制限ギネス類

  • extendsは
  • を制限している.
    class FruitBox<T extends Fruit> {
    	ArryaList<T> list = new ArrayList<T>();
    	...
    } //Fruit의 자손만 대입 가능
    
    FruitBox<Apple> appleBox = new FruitBox<Apple>(); //OK.
    FruitBox<Toy> toyBox = new FruitBox<Toy>(); //에러. Toy는 Fruit의 자손이 아님
  • インタフェースであってもextendsを用いて
  • を実現することができる.

    ch 12-11ギネス製薬会社

  • 型変数は、異なるインスタンスで
  • を置き換えることができる.
    タイプ変数は、
  • の静的メンバー
  • には使用できません.
  • アレイを生成する場合、タイプ変数は使用できません.タイプ変数を使用してアレイを宣言できます
    T[] itemArr;//OK
    T[] tmpArr = new T[itemArr.length];//エラー
  • ch 12-12ワイルドカード<?>

  • 参照変数が表すタイプは、他のオブジェクトを参照できます.
    '":Tとその子孫のみ
    '':Tとその祖先のみ
    '' : 制限はありません.と同じ
  • ArrayList<? extends Product> list = new ArrayList<Tv>(); //OK
    ArrayList<? extends Product> list = new ArrayList<Audio>(); //OK
  • メソッドのパラメータにワイルドカード
  • を使用する
    static Juice makeJuice(FruitBox<? extends Fruit> box) {
    	String tmp="";
    	...
    	System.out.println(Juicer.makeJuice(new FruitBox<Fruit>()));
    	System.out.println(Juicer.makeJuice(new FruitBox<Apple>()));
    }

    ch 12-14ムカデの方法


  • ギネスタイプを宣言する方法(タイプ変数はメソッドでのみ有効)

  • クラスのタイプパラメータはメソッドのタイプパラメータとは異なります
  • class FruitBox<T> {
    	...
    	static <T> void sort(List<T> list, Comparator<? super T> c) {
    	...
    	}
    }
  • メソッドが呼び出されるたびに、タイプ(多くの場合省略)
  • を入力必要がある.
  • メソッドを呼び出す場合、タイプを省略しないとクラス名
  • は省略できない.

    ch 12-15ムカデ型変換

  • ギネスタイプと元のタイプとの間の変形は望ましくない.
  • ワイルドカードタイプはGenericタイプ
  • に変換可能

    ch 12-16ムカデ型の除去

  • コンパイラはギネスタイプを削除し、必要な場所で変形します.
  • ギネスタイプの境界(bound)
  • を除去
  • ムカデタイプを削除した後、タイプが一致しない場合は
  • 変換を追加します.
  • ワイルドカードが含まれている場合、適切なタイプの変換
  • が追加される.

    12-17列挙(enum)

  • に関連する定数を組み合わせた.Javaはタイプセキュリティの列挙を提供する
  • 12-18列挙の定義と使用


  • 列挙タイプの定義方法
    列挙名{定数名1,定数名2,...}
    //0, 1 ...

  • 列挙タイプの変数を宣言および使用します.

  • 列挙定数の比較には==とcompareTo()を使用できます.
    (比較演算子は許可されていません)
  • 12-19列挙型の祖先-java。lang.Enum

  • すべての列挙型はEnumの子孫であり,以下の方法を継承する.
  • Class<E> getDeclaringClass() //열거형의 Class객체를 반환
    String name() //열거형 상수의 이름을 문자열로 반환
    int ordinal() //열거형 상수가 정의된 순서를 반환(0부터 시작)
    T valueOf(Class<T> enumType, String name) 
    //지정된 열거형에서 name과 일치하는 열거형 상수를 반환
  • ()、値Of()はコンパイラによって自動的に追加されます.

    ch 12-21列挙へのメンバーの追加


  • 不連続な列挙定数の場合、必要な値をかっこ()に書きます.
    enum Direction { EAST(1), SOUTH(5), WEST(-1), NORTH(10) }

  • カッコ()を使用するには、新しいインスタンス変数とコンストラクション関数を追加する必要があります.
  • enum Direction {
    	EAST(1), SOUTH(5), WEST(-1), NORTH(10);
    	
    	private final int value; //정수를 저장할 필드(인스턴스 변수)를 추가
    	Direction(int value) {this.value=value;} //생성자 추가
    	
    	public int getValue() {return value;}
    }
  • 列挙型の作成者はデフォルトではプライベートであるため、外部からオブジェクト
  • を作成することはできません.
    Direction d = new Direction(1); //에러. 열거형의 생성자는 외부에서 호출불가

    ch 12-23アニメーションとは?

  • 注釈はプログラミング言語に影響を及ぼさず、有用な情報
  • を提供する.
  • プレゼンテーション例
  • @Test //이 메서드가 테스트 대상임을 테스트 프로그램에 알린다.
    public void method() {
    	...
    }

    ch 12-24標準プレゼンテーション


    ch12-25 @Override


    コンパイラに
  • のカバー率が正しいかどうかを確認させます.
  • overlightingが完了すると、メソッド名を書き間違えたエラーが頻繁に発生します.
  • を超える場合は、メソッド宣言子の前に@Overrideを付けます.
  • 12-26 @Deprecated


    推奨
  • 以降使用されなくなったフィールドまたはメソッドに貼り付けます.
  • @Deprevented、DateクラスのgetDate()
  • @Deprecated
    public int getDate() {
    	return normalize().getDayOfMonth();
    }
    Deprentedを含むターゲットコードのコンパイル中に表示されるメッセージ
    Note: ... use or overrides a deprecated API.

    12-27 @FunctionallInterface

  • 関数インタフェースに貼り付け、コンパイラが正しく作成されているかどうかを確認します.
  • 関数インタフェースは、抽象的な方法
  • に限定される.

    12-28 @SuppressWarnings


  • コンパイラの警告メッセージが表示されないようにします.

  • カッコ()内で非表示にする警告のタイプを文字列として指定します.

  • 複数のアラームを同時に抑制

  • 「-Xlint」オプションでコンパイルすると、警告メッセージが表示されます.
  • 12-29メタデータ

  • プレゼンテーション
  • メタデータはjavaです.lang.アノテーションパッケージに含まれる
  • 12-30 @Target

  • プレゼンテーションを定義する場合は、
  • を使用して適用対象を指定します.

    12-31 @Retention

  • 予約期間を指定するための
  • SOURCE:ソースファイルにのみ存在します.クラスファイルには存在しません.
    CLASS:クラスファイルに存在します.実行時に使用できません.デフォルト
    RUNTIME:クラスファイルに存在します.実行時に使用できます.

    12-32 @Documented, @Inherited


  • Javadocで作成したドキュメントに含めるには、@Documentedを貼り付けます.

  • アニメーションをサブクラスに継承する場合は、@Inheritedが追加されます.
  • 12-33 @Repeatable


    繰り返し貼り付け可能なプレゼンテーションの定義には
  • を使用します.
  • @Repeatable付きのイラストは繰り返し貼り付けることができます.
  • @Repeatable in@…1つに結合するコンテナアニメーション
  • も定義する必要があります.

    12-34アニメーションタイプの定義

  • のアニメーションを直接作成して使用できます.
  • @interface 애너테이션이름 {
    	타입 요소이름(); //애너테이션의 요소를 선언
    	...
    }
  • プレゼンテーションの方法は抽象的な方法であり、プレゼンテーションを適用する際に(順序X)
  • を指定する.

    12-35プレゼンテーション要素


  • 適用時に値が指定されていない場合は、使用可能なデフォルト値(Null値を除く)を指定できます.

  • 要素が1つしかなくvalueという名前の場合は、要素の名前を省略できます.

  • 要素のタイプが配列の場合は、カッコ{}を使用する必要があります.
  • 12-36すべてのアニメーションの祖先

  • Annotationはすべてのアニメーションの祖先ですが、
  • は継承できません.
  • 実際にAnnotationはインタフェースです.
  • 12-37タグ補助-タグAnnotation

  • 要素未定義のアニメーション
  • 12-38アニメーション要素の規則

  • 宣言要素を宣言するときは、次のルールを遵守する必要があります.
  • 要素のタイプは、基本タイプ、String、Enum、プレゼンテーション、Class
  • のみです.
    パラメータは
  • カッコ()で宣言できません.
  • の例外を宣言することはできません.
  • 要素はタイプパラメータとして定義できません.