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

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

0

Class.forNameについて

例えばAクラスあるとします。そして、Bクラスから下記のようにAクラスを作成します。AクラスとBクラスは同じpackage内にあります。packageはaとします。
A a=new A(); これは成功する。
A a = (A)Class.forName("A").newInstance(); これはClassNotFoundExceptionになる。
A a = (A)Class.forName("a.A").newInstance(); これは成功する。

ある書籍のsampleコードがClassNotFoundExceptionのほうのコードになっていて、いろいろ悩んだあげくパッケージまで含めた名前にしたら成功しました。誤植情報には載っていませんでした。これは単なる誤植ですか?
同じpackage内なのにClass.forNameはパッケージまで含めないとダメなのでしょうか?
それとも書き方が何か間違っているのでしょうか?

3

回答

262

閲覧

3件の回答

評価

0

APIリファレンスに
要求するクラスの完全指定の名前

とあり、誤植と思います。

評価

0

a.Aとは別にAがあるのでない限りはね。

評価

0

ありがとうございました。

回答する

ログインしていません。

ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 アカウントをお持ちでない方は会員登録を行ってください。

ユーザ名匿名