ClassLoader - gnkoshelev/ai-game-platform GitHub Wiki

platform.app.util.Loader

Загрузка единичных *.class файлов

  • loadClassFromResource(resource_url: URL, fullClassName: String): Class<*>? Просто загружает fullClassName из файла, на который получит url.
val resource = javaClass.getResource("/Some.class")
val loader = Loader(arrayOf())
val loadedClass = loader.loadClassFromResource(resource, "ull.name.of.Class")
  • TODO Загрузка удобней и без лишних проверок. С учетом особенностей компиляции Kt файлов и наших нужд
  • TODO Загрузка из базы данных. (И в базу данных соотв. :)

Загрузка jar паков (для игр, например, или серьезных AI, которые неразумно писать в одном файле)

val loader  = Loader(/*список url ресурсов (.jar файлов)*/)
val loadedClass = loader.loadClass("full.name.of.Class")

  • Q: Что делать с загруженым классом?
  • A: NullCheck, then
      val instance = loadedClass.newInstance()
      if (instance is IYourDesiredInterface) { /* OK */ } else { /* NOT OK */}
    
    TODO Сразу спавнить приведёные к нужному интерфейсу объекты?