Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Вызов переменной
#11
В примере выше был примитивный тип (int bar), как он может бросить NPE ?
PHP код:
<?php 
class HlorkaGood {
public static
Object HLORA_IS_MY_FRIEND;
...
}

// Обращаемся к переменной
...
Object test = HlorkaGood.HLORA_IS_MY_FRIEND;
...
// Будет исключение NullPointerException
тут точно будет NPE ?) По-моему там null присвоится просто
Ответ
#12
Хлорка

Я извиняюсь, конечно, но какой-то несвязный бред.
1. Если переменная не константа (в случае Java, не static final), то это совершенно не означает, что ее обязательно инициализировать в месте объявления;
2. Java не позволит Вам использовать не инициализированную хоть чем-нибудь переменную. Соответственно, NPE актуален, когда переменная равна null - это разные вещи;
3. static != const вообще ни разу, почитайте что-нибудь про ООП;
4. Откуда Вы вообще взяли понятие "полустатичная переменная"? Переменная может быть static или non-static, другого не дано, Вы явно не понимаете смысл статических свойств и методов классов;
5. Для хранения загружаемых конфигов имеет смысл использовать final static, а не просто static-переменные. Применение static-переменных оправдано, потому что при создании экзмепляров классов, такие переменные не нуждаются в копировании для каждого объекта, а хранятся дружно в одном месте.
6. Чтобы использовать Reflection не нужно быть безумно-профессиональным, Reflection + Annotations могут дать довольно хороший буст в понимании написанного кода.
// aka Deft
Ответ
#13
Yorie Написал:
Хлорка

Я извиняюсь, конечно, но какой-то несвязный бред.
1. Если переменная не константа (в случае Java, не final), то это совершенно не означает, что ее обязательно инициализировать в месте объявления;
Ты читать научись где я такое писал? Я писал:
Хлорка Написал:Поэтому что не инициализировали. Если переменная не константа, то должна иметь дефолтовое значени или полуконстанта (файл конфигурации), то...
На момент вызова должна иметь значение, ты смотри что написано в блоке до того как читать сообщение и тролить!

Yorie Написал:2. Java не позволит Вам использовать не инициализированную хоть чем-нибудь переменную. Соответственно, NPE актуален, когда переменная равна null - это разные вещи;
Неинициализированная переменная и есть Null и вызовется тоже самое исключение. Иди отсюда!

Yorie Написал:3. static != const вообще ни разу, почитайте что-нибудь про ООП;
4. Откуда Вы вообще взяли понятие "полустатичная переменная"? Переменная может быть static или non-static, другого не дано, Вы явно не понимаете смысл статических свойств и методов классов;
А я разве такое писал? Полустатическая, это я ошибся, я хотел сказать полуконстанта - это мой термин для переменных которые технически не являются константами, но программа их не меняет. А вы явно хотите выставить меня идиотом, при том что сами даже не поняли то что я написал. Непоняли небось потому что и не знали а ха ха.

Yorie Написал:5. Для хранения загружаемых конфигов имеет смысл использовать final static, а не просто static-переменные. Применение static-переменных оправдано, потому что при создании экзмепляров классов, такие переменные не нуждаются в копировании для каждого объекта, а хранятся дружно в одно месте.
Вот это ты мне открытие сделал, можешь идти в школу работать. А по поводу final вы сначала лично попробуйте их в конфигах использовать, а еще лучше почитайте мой предыдущий пост о чем там вообще шла речь.

Yorie Написал:// Будет исключение NullPointerException[/PHP]
тут точно будет NPE ?) По-моему там null присвоится просто
Да тут пример плохой. Нужно из Object попробовать что-то извлечь, тогда будить исключение.
Ответ
#14
Цитата:Ты читать научись
Цитата:Иди отсюда!
Мб не будем переходить на личности?
Цитата:Неинициализированная переменная и есть Null и вызовется тоже самое исключение
Код:
int t;
Math.abs(t);
-> "Variable t might not have been initialized". C++ имеет абсолютно такую же логику для подобных ситуаций, такой код просто-напросто не скомпилится, вот и все.
"Никогда не видел такой ошибки, потому что везде пихаю foo = null" и "такой ошибки в природе не существует" - разные вещи.
Дальше комментировать не вижу смысла.
// aka Deft
Ответ
#15
оффтоп
[Изображение: l2nextgen.gif]
Ответ
#16
оуч... читай про классы,структуры...
приват для того и приват, что может работать только в своём круге) и делать из неё public - опасно Smile
если можно будет к ней обратиться, то соответственно её можно будет изменить...
Ответ
#17
finfan Написал:Как правильно вызвать любую переменну?
Вроде бы методы получается вызывать, а переменные - печаль...
мои попытки вызвать переменную из _power(getPower()) из L2Skill не увенчались успехом, 100% я д*лбаеб, но вопрос мучает, до 5 утра просидел, то одна ошибка, т овторая, скачал книги, сел читать, в 8 утра уже закончил с Ширлтом и продолжил по Эккелю, но скорее всего я что-то упустил!
Подскажите пожалуйста :ej:

Только не нужно кидаться тапками Sad

Вы видимо пытались вызвать из класса L2Skill метод, типа L2Skill.getPower().
Так делать нельзя - нужно вызывать из объекта класса, а не из самого класса - этот параметр не статический.
Нужно сначала взять скил, для примера
L2Skill skill =SkillTable.getInstance.getInfo(37,1);//Triple Slash
а потом уже посмотреть его силу
int power = skill.getPower();
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 6 Гость(ей)