フレームワークのようなものを書こうとしています。コンピューター上の特定のフォルダーを検索し、そこにあるインターフェイスを実装するすべてのクラス ファイルを取得できるようにする必要があります。フォルダーをスキャンしてすべてのクラスファイルをチェックする方法は知っていますが、読み取りクラスがインターフェイスを実装しているかどうかを確認できません。
if (Game.class.isAssignableFrom(classInFolder))
{
//Do sth here
}
これは私が試したアプローチの 1 つですが、if 句に飛び込むことはありません - Game is my Interface
public interface Game {
public void startAlgorithm();
}
classInFolder は、フォルダーから取得した Class です。私がいくつかのライブラリインターフェースで同じことをやろうとすると面白いことです.Serializableがうまくいくとしましょう.試してみました. ましてやそんなこと書いたら
Type[] type = classInFolder.getGenericInterfaces();
for (int i = 0;i<type.length;++i)
{
System.out.println("interface = " + type[i]);
if (type[i] instanceof Game){
System.out.println("It is");
}
}
私は自分のコンソール出力を手に入れました - interface = mypackage.Game しかし、「それは」という出力はありませんでした。使用しようとしたクラスの独自の注釈でも同じことが起こりました.クラスがインターフェイスを実装しているかどうかを確認することはできませんが、それらがいくつかのライブラリのインターフェイスである場合は機能します。プロジェクトをTomcat v 7.0にデプロイします。すべてがSpringを使用してEclipse上のJava 7でビルドされています。
何が起こっているのかについてのアイデアに感謝します。