Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Да это мои проблемы. Я создам файл в котором буду хранить все ключи игроков. И когда плагин будет включаться я буду все данные из него загружать в Map и тоже самое сделаю с onEnableСогласен. Хотя чего ожидать от ваниль б****
Даже на лечение кидать бесполезно...И когда плагин будет включаться я буду все данные из него загружать в Map и тоже самое сделаю с onEnable
Зачем его только с мапами научили работать?Да это мои проблемы. Я создам файл в котором буду хранить все ключи игроков. И когда плагин будет включаться я буду все данные из него загружать в Map и тоже самое сделаю с onEnable
Не будет, в java 8 синтаксис позволяет делать как я показал.Мб так будет правильнее:
private static Map<String, Integer> player_keys = new HashMap<String, Integer>();
Я лишь переделал твой код, убрав возможные NPE.И скинул не инкапсулированный код, норм.
Я знаю об этом методе, но не факт, что ТС использует Java 8. Ну и если ТС сделает что-то не так и запишет в коллекцию null, то "map.getOrDefault(key, 0).intValue()" выбросит NPE. <а если честно, мне было просто лень вспоминать сигнатуру этого метода>getOrDefault для кого придумали?
В данный момент 90% серверов используют Java 8 и все новые плагины сделаны именно на ней. Потому не нужно оправдываться, т.к не использовать Java 8 глупо😕Я лишь переделал твой код, убрав возможные NPE.
Я знаю об этом методе, но не факт, что ТС использует Java 8. Ну и если ТС сделает что-то не так и запишет в коллекцию null, то "map.getOrDefault(key, 0).intValue()" выбросит NPE. <а если честно, мне было просто лень вспоминать сигнатуру этого метода>
1.Это их проблемы. Динозавры когда-то уже вымерли, вот и вымрут еще раз.
- А остальные 10% используют Java7. Дня два назад ко мне как раз обращались с ошибкой, возникшей из-за того, что плагин был собран под Java 8, а на сервере стояла Java 7 (владелец опасался обновляться, считая (небезосновательно), что это может что-то сломать).
- А кто сказал, что ТС просто скопирует код и будет его использовать? Есть вероятность, что он попробует сделать что-то по-своему. И да, я просто высосал из пальца этот аргумент, так что не стоит его воспринимать всерьёз.
- Извиняюсь, перепутал. Код Exception_Prototype.
+1 на таких пора забить, сам сервак уже под 8 java собирается. Так что овертупо компилить плагин под 7ркой.1.Это их проблемы. Динозавры когда-то уже вымерли, вот и вымрут еще раз.
2.Ничего, будет искать проблему и как раз будет учить джаву на практике, так что еще лучше.
3. Ну ладно😗
што ты несешь?
- А остальные 10% используют Java7. Дня два назад ко мне как раз обращались с ошибкой, возникшей из-за того, что плагин был собран под Java 8, а на сервере стояла Java 7 (владелец опасался обновляться, считая (небезосновательно), что это может что-то сломать).
- А кто сказал, что ТС просто скопирует код и будет его использовать? Есть вероятность, что он попробует сделать что-то по-своему. И да, я просто высосал из пальца этот аргумент, так что не стоит его воспринимать всерьёз.
- Извиняюсь, перепутал. Код Exception_Prototype.
Правильно, скастит, но если заглянуть в полученный байткод (или просто применить декомпилятор), то сразу будет видна небольшая проблема.што ты несешь?
про boxing и unboxing в джаве слыхал? JVM сама все сделает если ты кастить к Integer не будешь
Это физически не возможно, если есть жесткие методы добавить и удалить, где не принимается значение null, так как интегер в методе.Правильно, скастит, но если заглянуть в полученный байткод (или просто применить декомпилятор), то сразу будет видна небольшая проблема.
Если во 2 пункте взять "int i = map.get(key)", то результат будет тот же - NPE (и 1 пункт уже не обязателен).
- Кладём в HashMap null.
- Используем "int i = map.getOrDefault(key, 0)".
- Компилятор это превращает в "int i = map.getOrDefault(key, 0).intValue()".
- getOrDefault возвращает null, так как именно такое значение лежит в Map (если бы не было ничего, то он вернул бы Integer.valueOf(0), но см. 1 пункт).
- "int i = ((Integer) null).intValue()" - получаем NullPointerException.
Я с таким неоднократно сталкивался в различных модах и плагинах, так что в подобных ситуациях предпочитаю всё проконтролировать, а не довериться компилятору и JVM. Пусть код будет менее красивым, зато он не крашнется в неподходящий момент.
Это физически не возможно, если есть жесткие методы добавить и удалить, где не принимается значение null, так как интегер в методе.
Map<String, Integer> map = new HashMap<>();
map.put("test", null);
int i = map.get("test");
int j = map.getOrDefault("test", 0);
System.out.println(i + j);
Ну давай отправь сюда null в интовую.
- Я, когда писал то сообщение, провёл небольшой тест. NPE вылетает.
- HashMap позволяет использовать null в качестве ключей и значений, так что всё возможно.
Java:Map<String, Integer> map = new HashMap<>(); map.put("test", null); int i = map.get("test"); int j = map.getOrDefault("test", 0); System.out.println(i + j);
void put(String str, int i) {
//TODO
}
Ну давай отправь сюда null в интовую.
Код:void put(String str, int i) { //TODO }
Ты опять начинаешь х*ню стрелять? Я ж уже говорил с тобой об этом...
- Сюда действительно нельзя отправить null.
- В Map нет метода с такой сигнатурой. Есть "public V put(K key, V value)", который превращается в "public String put(String key, Integer value)" и в который null легко отправляется.
Забей, тут все потеряно ужеНу давай отправь сюда null в интовую.
Код:void put(String str, int i) { //TODO }
Обсуждалось как раз это. Нормальный человек думает сразу про решение, а не про какие-то проблемы.Не понимаю причину такого негатива по отношению ко мне. Я лишь ответил @xDark насчёт боксинга и @alexandrage насчёт невозможности ситуации, которую я описал. Оба ответа вполне корректны, всё расписано по пунктам. Не спорю, возможно сделать безопасный метод, но ведь обсуждалось совсем не это.
вот пусть и эти динозавры мучаются.
- А остальные 10% используют Java7. Дня два назад ко мне как раз обращались с ошибкой, возникшей из-за того, что плагин был собран под Java 8, а на сервере стояла Java 7 (владелец опасался обновляться, считая (небезосновательно), что это может что-то сломать).
- А кто сказал, что ТС просто скопирует код и будет его использовать? Есть вероятность, что он попробует сделать что-то по-своему. И да, я просто высосал из пальца этот аргумент, так что не стоит его воспринимать всерьёз.
- Извиняюсь, перепутал. Код Exception_Prototype.