3

Javaインタープリターはオートローダー関数または彼の「クラスの検索」関数を拡張する可能性をサポートしていますか?

PHPには、spl_autoload_registerと呼ばれる関数があります(詳細については、 http: //www.php.net/manual/en/function.spl-autoload-register.phpを参照してください)。行方不明のクラスを探しています。私のコールバック関数では、期待されるクラスのファイルを含めることができます。

背景のアイデアは、ソフトウェアレイヤーを動的に切り替えたいということです。

例:
クラスx_L2がレイヤー2に存在する場合、基礎となるレイヤー1のクラスx_L1は無視する必要があります。実際、私はこの問題を一般的なミラークラスxで解決しました。これは、利用可能な最上位のレイヤーのクラスから継承する必要があります。ただし、この方法では、何百ものクラスを維持する必要がある場合にエラーが発生しやすくなります。

前もって感謝します。

4

4 に答える 4

1

独自のClassLoaderサブクラスを作成loadClass()し、デフォルトのサブクラスの代わりにそれを使用できます。

于 2012-01-04T10:02:55.380 に答える
1

これは、などの別のクラスローダーを使用して実行できますURLClassLoader。次に、このクラスローダーからクラスを取得しますloadClass。はい、ローカルおよびリモートのリソースもサポートしています。

于 2012-01-04T10:00:43.403 に答える
1

カスタムクラスローダーを作成しようとしているようですか?

IBMには、その上で役立つ優れた資料があります。

于 2012-01-04T10:06:14.190 に答える
0

クラスはPHPの名前空間で識別できるため、クラスはパッケージで識別されます。特定のクラスを使用するには、修飾名を使用するだけです。

public mypackage.mysubpackage.Myclass myInstanceofMyClass;

または、必要なクラスのみをインポートすることもできます。

import mypackage.mysubpackage.Myclass;

同じパッケージ内の別のクラスと同じ名前のクラスを持つことはできません。これは、型の重複した定義です。含めるためのコールバック関数を知りません。

于 2012-01-04T10:00:20.250 に答える