LoginSignup
0
1

More than 5 years have passed since last update.

Guava 特定パッケージ内のクラス一覧を取得する

Posted at

com.google.common.reflect.ClassPathを使用して、特定パッケージ配下のクラスを取得してみる。

pom.xml

<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.0</version>
</dependency>

getTopLevelClassesRecursiveメソッドで指定パッケージより下のパッケージから再帰的にクラスを取得してくれます。ただ単に、指定パッケージ内のクラス一覧を取得したい場合はgetTopLevelClassesメソッドを使用します。

ClassLoader loader = Thread.currentThread().getContextClassLoader();

try {
    Set<Class<?>> classes = ClassPath.from(loader)
            .getTopLevelClassesRecursive(getClass().getPackage().getName()).stream()
            .map(info -> info.load())
            .collect(Collectors.toSet());

    classes.forEach(System.out::println);
} catch (IOException e) {
    // TODO
}

※インナークラスについては取得できません。
※TopLevelであれば、enum, interface, abstract classも取得できます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1