У меня есть сценарий использования, когда я отправляю некоторые данные на свой сервер (в качестве аналитики), которые всегда либо String
, Boolean
или Number
.
Как я могу заставить вызывающего абонента отправлять только число, логическое значение или строка, а НЕ любые другие объекты?
Следующие случаи должны работать -
userProperties: MutableMap<String, in AnyPrimitive> = mutableMapOf(),
userProperties.put("someKey", 1)
userProperties.put("someKey", 1.2f)
userProperties.put("someKey", "someValue")
userProperties.put("someKey", true)
, но не
userProperties.put("someKey", myCustomObjectInstance)
Подход, который я пробовал, создавал реферат класс EventData
, который реализует CharSequence
и Number
. Но для этого требуется, чтобы каждый создал экземпляр этого класса, а не отправлял просто число или строку.
Я могу поставить logi c для проверки типа и выбросить исключение, но я бы предпочел ограничить его при компиляции время.