次のコードのように、クラスのパスをどのように言及できますか?
Class cl=Class.forName("SomeClass");
これは、「SomeClass」が呼び出し元のクラスの同じディレクトリにある場合にうまく機能します。しかし、別のディレクトリからクラスをチェックする方法については、その構文がのようxxxx.yyyy.class
になっているのを見ましたが、それらの「x」と「y」が何を表しているのか理解できませんでした。助けてください。前もって感謝します。
それらはパッケージ名xxx
を表します。yyy
パッケージは通常、パッケージと同じ名前のディスク上のディレクトリで表されます。package xxx.yyy
クラスファイルを作成するときは、ファイルの先頭に記載することで、クラスがどのパッケージに入るのかを指定できます。
"SomeClass"
パッケージ名なしで参照するとSomeClass
、デフォルトパッケージで指定されたクラスをロードしようとします。
ClassNotFoundException 例外が発生する可能性があることを確認してください。ただし、Class.forName を使用してください。これはランタイム例外であるため、キャッチする必要はありません。これは、クラスへのパスが正しいかどうかを知る方法です。問題は、クラスが見つからない場合、コードでおかしなことが起こる可能性があることです。
Class.forName(com.my.package.ClassName)