Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

違いをおしえて


new演算子とClass.forName("hogehoge")は何が違うの。

3

回答

2658

閲覧

3件の回答

評価

0

で、あなたはそれぞれをどう理解してるの?

理解している部分の間違いの指摘ならしやすいが、そうでなく解説しろと言うならそれはちょっと、こういうメディアでは難しいと思う。

評価

0

書き方と名前

評価

0

1.何が違うか?
new hogehoge();
と書くとコンパイル時にhogehogeを参照します。
コンパイル時にクラスが存在しなければコンパイルエラーが発生します。

Class.forName("hogehoge");
と書くと実行時にhogehogeを参照します。
実行時にクラスが存在しなければランタイムエラーが発生します。

2.何に使うか?
Class.forName("hogehoge");
のhogehogeはコンパイル時に存在する必要が無いためhogehogeの実装とClass.forNameを呼び出している部分の実装を(作成時に)分離することができます。

データベースアクセス等のプログラムを作成する時にJDBCに含まれるクラスのメソッドでプログラムを作成し、使用するクラスを生成する時にこの記述を使用する場合があります。

また、"hogehoge"の部分はClass.forNameを呼び出しているクラスから見て、ソース上は単なる文字列なので"hogehoge"の代わりに変数にし、その変数の値を変更することで実行時にダイナミックに生成するクラスを変更することもできます。

リフレクションAPIの説明も参照してください。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。