#android-studio #kotlin
#android-studio #kotlin
Вопрос:
Я хотел бы, чтобы мой класс данных Kotlin был как можно более простым. Он инициализируется только из JSONObject
такого:
data class Foo(val json: JSONObject)
{
@JvmField val bar: String = json.getString("bar")
}
Есть ли какой-либо способ аннотировать класс, который конструктор может выдать JSONException
?
Ответ №1:
Я думаю
class Foo @Throws(JSONException::class) constructor(val json: JSONObject) {
// code
}
должно работать
Ответ №2:
Да, вы можете, ваше объявление класса имеет неявный первичный конструктор
Вы можете аннотировать конструктор после того, как вы определили это явно:
data class Foo @Throws(JSONException::class) constructor(val json: JSONObject)
Комментарии:
1. Спасибо всем за ответы, все они очень полезны, но с интервалом всего в несколько секунд. Я решил принять это, потому что ссылка предоставляет дополнительную информацию.
Ответ №3:
То же самое, что вы делаете для функции:
import kotlin.jvm.Throws
class Foo @Throws(JSONException::class) constructor(val json: JSONObject) {
init {
// ...
}
}
Это становится следующей сигнатурой Java:
public Foo(JSONObject json) throws JSONException