Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Правильное написание комплекса, есть ошибка: StackOverflowError 
:(
    Опции темы
barin_Student
Дата 1.2.2008, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Доброе время суток...
Что это за ошибка , я примерно догадываюсь...
Теперь вопрос, я в каждом новом классе объявляю одно и тоже например:
Код

public class Nuber1{
   ErrorLogger error = new ErrorLogger();
   Beeline beeline = new Beeline();
   GSMReader gsmReader = new GSMReader();
.......................................
}

Код

public class Nuber2{
   ErrorLogger error = new ErrorLogger();
   Beeline beeline = new Beeline();
   GSMReader gsmReader = new GSMReader();
.......................................
}

Код

public class NuberN{
   ErrorLogger error = new ErrorLogger();
   Beeline beeline = new Beeline();
   GSMReader gsmReader = new GSMReader();
.......................................
}

Я знаю(догадываюсь что это не правильно) ... как мне лучше сделать(может эти объявы сделать в одном какомнить классе) .. и все таки точно почему вышла эта ошибка?
Заранее благодарен.


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
jManiak
Дата 1.2.2008, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 6.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата

public class StackOverflowError
extends VirtualMachineError

A StackOverflowError is thrown when the execution stack overflow occurs. This often occurs when a method enters infinit recursion.


Объекты держаться. Т.е. ссылки на них неудаляешь, и поэтому мусорщик не удаляет их. Вот оно и переволняется.

А на счет классов...
Написать один суперкласс, в нем реализовать общие для всех классов методы, объекты и т.п. А остальные классы уже наследовать от него.
Точно не помню, но по-моему такой Паттерн так и называется Superclass. Думаю всевидящий Гугл много скажет по этому поводу.
PM MAIL ICQ   Вверх
barin_Student
Дата 1.2.2008, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Имеется ввиду вот такая картина:


Код

public class Nuber1 extends SuperForNuber{
   private Booke()
  {
       super.error.Write("");
       super.beeline//
       super.gsmReader();
   }

.......................................
}
 

Код

 public class Nuber2 extends SuperForNuber{
   private Read()
  {
       super.error.Write("");
       super.beeline//
       super.gsmReader();
   }

.......................................
}
 


Код

public class NuberN extends SuperForNumber{
   private write()
  {
       super.error.Write("");
       super.beeline//
       super.gsmReader();
   }
.......................................
}
 
Код

public class SuperForNuber{
   ErrorLogger error = new ErrorLogger();
   Beeline beeline = new Beeline();
   GSMReader gsmReader = new GSMReader();

}


Это сообщение отредактировал(а) barin_Student - 1.2.2008, 08:36


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
Kangaroo
Дата 1.2.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(jManiak @  1.2.2008,  07:13 Найти цитируемый пост)
Объекты держаться. Т.е. ссылки на них неудаляешь, и поэтому мусорщик не удаляет их. Вот оно и переволняется.

А точно объекты? Это ж не OutOfMemory, а StackOverflowError. А обычно такое из-за рекурсивного метода.


barin_Student, а почему инициализацию тоже не вынести в супер класс? Или она разная?


--------------------
Lost....
PM MAIL MSN   Вверх
barin_Student
Дата 1.2.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Скажем так около 10% всех объектов можно инициализировать в Супере. Но вопрос если скажем класс делает сложение 2 чисел , вопщем вот такая картина:
Код

public class Summary exends Simulator{
   public void joker(){
       super.history.Write("Сложение двух чисел :2+2");
       int a = 2+2;
   }|
}

Код

а сaм Simulator:
public class Simulator{
     HistoryWriter history = new HistoryWriter();
..................
//и еще сотня объектов и методов...
}

Не получиться ли так что  extends Simulator ,  намного больше подгрузит в класс Summary чем я бы просто там это HistoryWruter объявил...
Собственно при написание комплекса как вы сами оьъекты храните и объявляете?


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
barin_Student
Дата 1.2.2008, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Вопщем тогда вопрос , как мне правильно поступить с объектами... или как мне их правильно объявить, чтоб мусорщих подчищал?........


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
jManiak
Дата 1.2.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 6.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата(Kangaroo @  1.2.2008,  11:14 Найти цитируемый пост)
А точно объекты? Это ж не OutOfMemory, а StackOverflowError. А обычно такое из-за рекурсивного метода.

Ну да, перепутал... smile хотя в цитате же правильно написано...
PM MAIL ICQ   Вверх
jManiak
Дата 1.2.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 6.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Объявлять как и всегда. а чтобы не оставалось ссылок на них, достаточно обнулить.
объявление:
Код

myClass object1 = new myClass();

обнуление: 
Код

object1 = null;

Либо если объекты хранятся к примеру в массиве, либо какой-то коллекции, то соответственно искать их и обнулять ячейки массивалибо удалять из коллекции...
PM MAIL ICQ   Вверх
Ornitos
Дата 2.2.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.10.2007
Где: Непал

Репутация: 2
Всего: 3



Цитата(barin_Student @  1.2.2008,  11:44 Найти цитируемый пост)
Не получиться ли так что  extends Simulator ,  намного больше подгрузит в класс Summary чем я бы просто там это HistoryWruter объявил...

Получится

LSP
PM MAIL WWW   Вверх
barin_Student
Дата 4.2.2008, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Ведь суть дела поменяется если скажем так будет:
Код

public class test
{
      HistoryWriter history=null; 
      public int Number1()
      {
           history = new HistoryWriter();//получается данная ссылка подгружается только в момент работы метода, а после того как метод отработает , это ссылка - опять нулл будет?
      }
}

получается данная ссылка подгружается только в момент работы метода, а после того как метод отработает , это ссылка - опять нулл будет?
Я саму ошибку решил.. теперь просто знать надо как максимально верно писать надо)))


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0826 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.