У меня есть следующий класс, который в основном получает строку JSON из AWS, а затем преобразует ее в экземпляр класса данных ...
class SecretsManager(region: String) {
private val gson = Gson()
private val smClient = AWSSecretsManagerClientBuilder.standard().withRegion(region).build()
fun <T> getSecret(id: String): T {
val req = GetSecretValueRequest().withSecretId(id)
val json = smClient.getSecretValue(req).getSecretString()
return gson.fromJson(json, T::class.java)
}
}
Для использования таким образом. ..
val myInstance = SecretsManager("eu-west-2").getSecret<MyDataClass>("myId")
В настоящее время я получаю сообщение об ошибке - Невозможно использовать «T» в качестве параметра повторного типа . Я могу обойти это, пометив функцию как встроенную, а T как реифицируемую, но тогда я не могу получить доступ к частным атрибутам из самой функции.
Какой лучший способ сделать это в Kotlin?