0

2 つのプロジェクト javaapplication2 と javaapplication1 があります。パッケージ名も同じです。javaapplication2では、次を使用してjavaapplication1をインポートしました

import javaapplication1.*;

パッケージ内のすべてのクラスをリストする必要があります。これを達成する方法は?簡単なコードを試しましたが、null 例外が発生します。

Package pck;
pck = Package.getPackage("javaapplication1");
System.out.println(pck.getClass());
4

3 に答える 3

0

この質問にコメントしたり、そのようにマークしたりするのに十分な担当者がいませんが、次の重複です:

パッケージからすべてのクラスを取得する

その質問には多くの良い答えがリストされています。たとえば、トップは ICommand を実装するクラスを探しているので、これを実装するには、次を削除するだけです。

if (ICommand.class.isAssignableFrom(cls)) {
  commands.add((Class<ICommand>) cls);
}

for ループから、必要なものが得られます。

于 2013-05-15T10:19:19.453 に答える
0

パッケージjavaapplication1を含むjarがクラスパスにないのではないかと思います

  Package.getPackage("javaapplication1");

あなたのためにnullを返しています。

また、

次のリンクをご覧ください。

http://dzone.com/snippets/get-all-classes-within-package

または、必要な情報を取得するためにGoogle の Reflection ライブラリを調べることもできます。以下にサンプル コードを示します。

例えば

Reflections reflections = new Reflections("javaapplication1");
Set<Class<? extends Object>> allClasses = reflections.getSubTypesOf(Object.class);
于 2013-05-15T10:16:59.270 に答える
0

オブジェクト クラス API を使用すると、次のように記述されます。

//オブジェクト API


getClass public final Class getClass() オブジェクトのランタイム クラスを返します。その Class オブジェクトは、表されるクラスの静的同期メソッドによってロックされるオブジェクトです。

戻り値: オブジェクトのランタイム クラスを表す Class 型のオブジェクト。


オブジェクトの実行時クラスを表すため、明確に記述されています。サイド「javaapplication1」パッケージに「Helloworld」と呼ばれるクラスがあり、クラスのオブジェクトを次のように作成するとします。

Helloworld world=new Helloworld(); そして System.out.println(worlld.getClass()); として実行してみてください。現在のオブジェクトのクラスパスを返します。

于 2013-05-15T10:34:14.337 に答える