【问题标题】:Kotlin reflect package and get all classesKotlin反射包并获取所有类
【发布时间】:2020-01-27 17:56:06
【问题描述】:

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

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

【问题讨论】:

  • 这可能会有所帮助:stackoverflow.com/questions/520328/…
  • @Tenfour04 不是真的,因为它只是用于 java 类。我希望类描述为 KClass 对象。
  • 您可以将 Java Class 转换为 KClass。 myJavaClass.kotlin
  • 你是对的。谢谢。

标签: kotlin package reflect


【解决方案1】:

这是我的解决方案。

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)
    }
}

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多