![]() |
JAVA JAVA JAVA
Как в java определить(специфицировать) метод класса в package чтобы при наследовании класса он сохранялся но не был виден из другого класса в данном package, в отличии от protected?
|
модификатор public - класс видно из всего приложения
package local (default) - инстанс класса можно создать только в данном пакадже модификатор protected - видно только наследникам модификатор private - видно только внутри класса то что ты хочешь сделать - можно добиться грамотным распределением классов по пакетам, больше никак... т.е. кладешь в самый глубокий пакадж классы с пакадж локал доступом, а наследников кладешь в пакадж уровнем выше... вложенность только в глубину работает |
Напишу в эту темя, тоже появе...
Короче проблемма такая.... в одном классе создан инт массив, этот же массив нужен и в другом классе, но когда я к нему обращаюсь, топишется java.lang.NullPointerException Вообшем структура кода примерно такая - public class first { public static int [][]massiv; public static void main(String[] args) { int[][] massiv = new int[count][2]; //zapolnjajetsja massiv } } class second { public void { System.out.println(first.massiv[0][0]); } } |
alexksei
А где создание объекта класса first? Или, раз у тебя в нем все сделано как static, то как минимум где вызов метода main, создающего (выделяющего память под) этот массив? Если нигде нет, то очень даже правильно ругается на NullPointerException. |
Нету ни обьекта класса first, ни вызова метода майн....
А как это делается ? ... Ну если не сложно, обьясни как сделать и первое и второе :help: Сразу еще один вопрос - у меня есть куча комбобоксов, текстфилдов и одна кнопка, при нажатии на которую должно считываться содержимое всех комбобоксов и текстфилдов.... Вообшем я в состоянии сделать только считывание с конкреного обьекта на котором произвелось действие... class guiexampleFrame extends JFrame implements ActionListener { guiexampleFrame() { JComboBox maakond = new JComboBox(maakonds); maakond.addActionListener(this); buttonpanel.add(sorteerimine); buttonpanel.add(maakond); buttonpanel.add(otstarve); buttonpanel.add(veekogu); buttonpanel.add(textfield1); buttonpanel.add(textfield2); } public void actionPerformed(ActionEvent e) { JComboBox cb = (JComboBox)e.getSource(); selectedItems[0]= (String)maakond.getSelectedItem(); System.out.print(selectedItems[0]); } |
Раз по какой-то причине ты объявил в первом классе все как static, то создавать объект класса first не надо, но память под массив надо выделить - это у тебя делается в методе main. Только не понятно что у тебя там за count.
Вызов метода main - это просто first.main(...). Но только опять же, судя по аргументам метода main класса first можно судить что это метод у тебя должен вызываться сразу при запуске программы, и массив у тебя должен сразу создаться. Тогда где вообще у тебя создается объект класса second чтобы пользовать массив в классе first? Это у тебя полный текст программы? Что ты хочешь осуществить и чем руководствовался, когда писал ту путаницу, что привел здесь? |
Вложений: 1
НУ ессно текст не полный далеко, просто текст программы слишком большой и там много лишнего, не относящегося к проблеме....я просто общую структуру изобразил, чтоб было понятно откуда и куда следует массив...
main -запускается сразу, webcontent считывает файл(каунт - колво строк нужных, которые буду в массиве), они забиваются в массив, далее guiexamplFrame создает все кнопки и так далее, и exampleCanvas класс - его назначение нарисовать график по числам из массива.... Вообшемто программа выглядить даже чуть подругому, может это както прояснит ситуацию - public class first { public static int [][]massiv; public static void main(String[] args) { .... webcontent(); ..... JFrame frame = new guiexampleFrame(); .... } webcontertnt{ ..... int[][] massiv = new int[count][2]; ... //zapolnjajetsja massiv} } } class guiexampleFrame extends JFrame implements ActionListener { .... guiexampleFrame() { ....... drawpanel = new examplecanvas();}} class examplecanvas extends Canvas { .... public void paint(Graphics g) { {..... System.out.println(first.massiv[0][0]); } } Вот.. более подробная схема, может поможет пролить свет....Если надо, то могу прислать полную версию программы....Ну очень надо мне её закончить.... Прикрепил код, там сильная каша, много всяких ненужных переменных и прочего, не обращайте внимания )) Главное - помогите :help: |
Попробуй сделать другой пример без всего лишнего. Так проще заставить работать. А потом можно сравнивать с большим кодом.
|
alexksei:public static int [][]massiv;
попробуй убрать static, а к массиву обращаться по ссылке на него (передать через параметр) |
Цитата:
Нет, так тоже не получится, обращение к тому классу идет еще из другого класса.... Вообшем эту проблемму решил, воспользовался аррейлистами, не знаю почему, но с ними такой проблеммы не было.... Проблеммы с actionlistener так и осталась.... не могу сделать так чтобы при нажатии на кнопку считывалось все что введено в остальных комбобоксах и текстфилдах :mad: |
alexksei
У тебя вообще какая-то ерунда написана в коде. В классе guiexampleFrame ты описываешь свои сомбобоксы и текстфилды как _члены_ класса. Код:
JTextField textfield1, textfield2, textfield3;Код:
JComboBox maakond = new JComboBox(maakonds);Потом, раз они будут членами класса, то и доступны они будут в любом методе этого класса. В том числе в обработчике события actionPerformed(ActionEvent e). И тебе не надо пататься вытащить их из аргумента события Код:
(JComboBox)e.getSource()Код:
selectedItems[0]= (String)maakond.getSelectedItem(); |
ЕЖ, ОГРОМНОЕ спасибо, еслибы ты знал сколько я времени убил на это, топтался на одном месте :mad: .... Значит и с массивом была таже проблемма, я его обьявлял там, а создавал другой с тем названием просто =))
ТОлько как создать массив то правильно чтоб он был именно то ? Я делал так - public static int [][]allMassiv; - в классе int [][]allMassiv = new int[count+1][2]; - это уже в майн, когда нашел каунт... но видимо создается другой массив с такимже названием опятьже.... |
Раз у тебя одна размерность константная, то напиши что-то типа
Код:
class myClass |
| Часовой пояс GMT +4, время: 05:24. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.