Есть ли способ идентифицировать класс данных Kotlin из обычного класса Kotlin?

Есть ли способ идентифицировать класс данных Kotlin из обычного класса Kotlin? Может быть, с помощью отражения?

2 ответа

Решение

Начиная с версии 1.1 в классе есть свойство isData

MyDataClass::class.isData

Ты не умеешь читать data аннотация отражением, потому что она имеет сохранение по умолчанию (CLASS).

Вы можете попробовать использовать некоторую эвристику, например, проверить, что она содержит следующие методы:

  • public final copy
  • public final component{N}
  • public static copy$default

Но обратите внимание, что кое-что из этого является деталями реализации и может быть изменено в будущем.

Другие вопросы по тегам