| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > non-static и static context |
| Автор: brejnev 19.9.2005, 17:47 | ||
Только начал изучать Java, возник вопрос. Есть исходник
на строке jComboBox1.addItem( res.getString("Name") ) компилятор ругается "non-static method execSQL() cannot be referenced from a static context" - как это обойти? |
| Автор: allex 19.9.2005, 17:55 | ||
Ругается компилятор не на эту строку, а на вызов execSQL() из main(). Необходимо указать объект, для которого вызывается метод.
|
| Автор: brejnev 19.9.2005, 18:13 | ||||
Решил проблему, код генерит NetBeans и по-этому я решил не трогать, то что он там натворил. Код
так же не работает. Если execSQL расписать, то ошибку компилятор покажет на строке, с jComboBox. Я просто вынес execSQL() в конструктор
Работает, только первую строку sql-запроса не пропускает, но это я уж сам разберусь А в общем, ничего плохого, что execSQL() оказалось в конструкторе? |
| Автор: batigoal 19.9.2005, 21:50 | ||
Особо, наверное, ничего, но по смыслу нехорошо... А вообще, советую код руками полностью писать, особенно поначалу. Полезнее. |
| Автор: bars_uz 21.9.2005, 10:35 |
| Ya toje rekomenduyu prisat ruchnuyu... A to esli v dolneyshem budete pisat sereoznie proekti u Vas mogut voznika bolshie problemi.. |
| Автор: Macross 26.9.2005, 10:37 | ||
| В документации написано, что static методы могут обращаться только к static методам. В статик методе сначала нужно создать объект а затем обращаться к его методам. Это должно работать:
А по поводу того, что net bins сам сгенерировал код и лутше его не трогать скожу так - создал, то он его создал, но вот изменять то не запретил, в отличии от метода initComponents(). Это к тому, что всех нюансов генератор кода предусмотреть не может и править код вполне можно и даже нужно. Генератором нужно пользоваться для сокращения рутинной работы а с кодом вы сами вольны делать, что хотите, главное понимать, что вы делаете Для ярых поклоников генераторов можно попробывать execSQl() сделать static возможно еще понадобиться и все переменные и методы используемые в execSQL() также сделать static, но это уже в сторону извращений. |
| Автор: batigoal 26.9.2005, 14:47 |
| Macross - пожалуйста, пользуйся кнопкой "Код" - так нагляднее. |