Получить simpleName из результата фабрики

1
9

Я использовал свой универсальный метод с Class для передачи имени типа, так как я не могу использовать reified. Это заставило меня вызывать мои методы с помощью MyModule::class.java Недавно я узнал о фабриках типов с использованием ::MyModule и подумал, что, возможно, я мог бы использовать его для получения имени типа вместо этого, потому что он короче, чем предыдущий метод.

Проблема в том, что я не знаю, как извлечь simpleName из результата фабрики. Я мог бы создать экземпляр factory()::class.simpleName, но это кажется расточительным.

tl;dr: я хочу выполнить рефакторинг с

до

//, чтобы мне не приходилось вводить ::class.java каждый раз, когда я его использую

override fun <T: IMyModule>set(key: String, value: String, type: Class<T>) {
   val settings = type.simpleName;
   ...
}
set("COM", "1", SmModule::class.java);
override fun <T: IMyModule>set(key: String, value: String, type: () -> T) {
   val settings = type.returnType.simpleName; // doesn't work
   val settings = type()::class.simpleName; // inefficient
   ...
}
set("COM", "1", ::SmModule); 
Твердислав
Вопрос задан30 января 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.