0

如何反映一个包并将所有类列为 KClass<*>?

fun listAllClassesInPackage(pack: String): List<KClass<*>> = ...
fun main(args: Array<String>) {
    val classes: List<KClass<*>> = listAllClassesInPackage("com.example")
    classes.forEach { k ->
        println(k)
    }
}
4

1 回答 1

0

这是我的解决方案。

package com.example

import org.reflections.Reflections
import org.reflections.scanners.ResourcesScanner
import org.reflections.scanners.SubTypesScanner
import org.reflections.util.ClasspathHelper
import org.reflections.util.ConfigurationBuilder
import org.reflections.util.FilterBuilder

class Test1

fun op1() = ""

fun main(args: Array<String>) {
    val packagePath = "com.example"
    val reflections =
        Reflections(
            ConfigurationBuilder()
                .filterInputsBy(FilterBuilder().includePackage(packagePath))
                .setUrls(ClasspathHelper.forPackage(packagePath))
                .setScanners(SubTypesScanner(false))
        )
    val typeList = reflections.getSubTypesOf(Object::class.java)
    typeList.forEach { c ->
        println(c.kotlin)
    }
}
于 2020-01-28T18:38:23.340 回答