Всем привет
Представим такую ситуацию: в обновлении плагина появились новые значения для конфига, а у пользователя он старый. Можно просто попросить пользователя добавить значения вручную или пересоздать конфиг, но это создаёт лишние неудобства и так делать как-то не хочется. Поэтому появилась идея: сделать проверку на наличие параметра в конфиге, и если его нет, то добавлять для него дефолтное значение.
Есть вот такой код:
И он практически идеально выполняет свою задачу, но я заметил вот такую ошибку: если переменная в long, то параметр в конфиг записывается как обычное число. И при получении его такой строкой:
Получается такая ошибка:
Как можно сделать лучше?
Представим такую ситуацию: в обновлении плагина появились новые значения для конфига, а у пользователя он старый. Можно просто попросить пользователя добавить значения вручную или пересоздать конфиг, но это создаёт лишние неудобства и так делать как-то не хочется. Поэтому появилась идея: сделать проверку на наличие параметра в конфиге, и если его нет, то добавлять для него дефолтное значение.
Есть вот такой код:
Java:
protected YamlConfiguration config = // ...
protected <T> T checkValue(String path, T defaultValue) {
if (!config.contains(path)) {
config.set(path, defaultValue);
return defaultValue;
} else {
return (T) config.get(path);
}
}
И он практически идеально выполняет свою задачу, но я заметил вот такую ошибку: если переменная в long, то параметр в конфиг записывается как обычное число. И при получении его такой строкой:
Java:
private long minimalPlayedTime = 3600L;
minimalPlayedTime = checkValue("minimalPlayedTime", minimalPlayedTime);
Получается такая ошибка:
Код:
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
Как можно сделать лучше?