2019年6月5日Javaの反射の学習日記

負荷および負荷クラスの概要タイミング:

:概要

あなたは、クラスを使用したい場合は、クラスがまだ初期化されて積載することによってシステム、接続し、このクラスを達成するための3つの手順を初期化し、メモリにロードされていない場合

ロード

  クラスファイルがメモリに読み込まれ、そして誰がClassオブジェクトを作成します。クラスオブジェクトを作成するために、システムによって使用される任意のクラス

接続

  正しい内部構造ことを確認し、他のクラスと調整

  メモリを割り当てると、デフォルトの初期値を設定するための静的クラスメンバーの作成責任

  バイナリデータクラスを解析する記号参照に直接参照を交換しています

初期化

  これは、初期化ステップであります

B:ロード機会

クラスのインスタンスを作成します。

アクセスクラスの静的変数や静的変数の代入

静的メソッド呼び出しクラス

java.lang.Class対応するクラスまたはインタフェースオブジェクトを強制する方法を作成するためにリフレクションを使用して

クラスのサブクラスを開始

マスタークラスを実行するために直接使用するのjava.exeコマンド

クラスローダと分類の概要:

:概要

ローディングの責任をのためにメモリにファイルと対応するクラスオブジェクトを生成する.class。

B:分類

Bootstapクラスローダのルートクラスローダ

拡張クラスローダ拡張クラスローダ

システムクラスローダシステムクラスローダ

C:役割

Bootstapクラスローダのルートクラスローダ

  また、ブートストラップクラスローダとして知られていると、ロードJavaのコアクラスを担当して

  このようなシステム、文字列として。JDK、JREのlibディレクトリの下にrt.jarのファイルで

拡張クラスローダ拡張クラスローダ

  JRE拡張ディレクトリのjarパッケージをロードする責任があります

  extディレクトリの下のJDK、JREのlibディレクトリに

システムクラスローダシステムクラスローダ

  javaコマンドからロードするクラスファイルを担当し、クラスパス環境変数に指定のjarパッケージおよびクラスパス時にJVMの起動

リフレクションの概要:

:概要

JAVAの反射本当に動作状態は、任意のクラスのために、このクラスのすべてのプロパティとメソッドに知られて作られています

任意のオブジェクトには、そのメソッドとプロパティのいずれかを呼び出すことができます

このアプローチの反射機能とJava言語と呼ばれる動的に取得動的呼び出しオブジェクト情報

クラスの解剖学的構造に、あなたは最初のバイトコードファイルオブジェクトクラスを取得する必要があります

クラスのメソッドは、解剖学で使用されるので、最初のタイプに対応する各オブジェクトクラスのバイトコードファイルを取得し、

B:三つの方法

A:はgetClassオブジェクトクラス()メソッドには、2つのオブジェクトが同一のバイトコード・ファイルであるか否かが判断されます

B:静的プロパティクラス。ロックオブジェクト

C:にforNameクラスのクラスの静的メソッド()は、コンフィギュレーションファイルを読み取り

Class.forNameの()は、構成ファイルの例を読み取ります。

ジューサー

用いた反射法により設定されたパラメータを取得します。

コンストラクタ

入手して、反射によってメンバ変数を使用します。

フィールド

取得及び反射するための方法を使用して:

方法

一般的な検査全体の反射によって:

指定されたプロパティの値を反映して、オブジェクトの一般的なセットを書きます:

演習:

ダイナミックエージェントの概要と実装:

:概要

エージェント:物事は自分で行われている可能性は、他の人は、プロキシオブジェクトは誰に頼まれたん

動的エージェント:オブジェクトプログラムを生成するが実行され、実際には動的プロキシはプロキシを反射することにより生成すること

概要テンプレートのデザインパターンと使用:

:概要

テンプレートメソッドアルゴリズムのスケルトンを定義することで、アルゴリズムは、遅延を達成するためにサブクラスに特異的であろう

B:長所と短所

A:利点

Template Methodパターン、同時に骨格中のアルゴリズムの定義は、柔軟性のためのユーザーの需要を満たすために特定のアルゴリズムを達成するために非常に柔軟であることができ

B:欠点

アルゴリズムはスケルトンを変更しなければならない場合は、抽象クラスを変更する必要があります

JDK5の新機能(独自の実装列挙クラス):

:概要

変数の値は、列挙された値の範囲内に制限され、リストされる変数の値を指します。

B:シングルトンデザインパターンを思い出してください:クラスのシングルトンインスタンスは一つだけを持っています

例えば多くのクラスは、クラスの複数のインスタンスではなく、実施例の無限の数が、実施例の限定された数を有しています。この順序は、列挙クラスです

C:デモ

列挙クラスの列挙によって達成:

列挙に注意してください。

キーワード列挙型を使用して定義する列挙クラス

列挙クラスのすべてが列挙型のサブクラスです

最初の行列挙クラス列挙しなければならない上、最後のエントリの後に列挙セミコロンは省略することができますが、他のものの列挙クラスがある場合、セミコロンを省略することはできません。省略しないことをお勧め

列挙型クラスは、コンストラクタを持つことができますが、それはプライベートでなければならず、それはデフォルトのプライベートです

列挙型クラスは抽象メソッドを持つことができますが、列挙は、このメソッドをオーバーライドする必要があります

列挙クラスの一般的な方法:

6つの新機能のJDK7:

:バイナリリテラル

B:数値リテラルは下線ことができます

C:switch文は、文字列を使用することができます

D:一般的な単純化し、一般的なダイヤモンド

E:異常な複数のcatch合併、異常または各|

F:トライして、リソースのステートメント

JDK8新機能:

非静的、デフォルトの必須変更した場合のインタフェースは、本体の方法で定義することができます

あなたは静的である必要はありません場合は

 

 

おすすめ

転載: www.cnblogs.com/clqbolg/p/10989810.html