2012-04-14 4 views
0

У меня есть ArrayList объектов, которые используются в подклассах helperclass. Я отправляю данные, необходимые для подкласса, например new subclass(ArrayListObject), и эти подклассы обрабатываются в структуре карты в helperclass. Поскольку один объект ArrayListObject хранится в helperclass, я предположил, что он будет связан в подклассах, которым нужен этот объект для вычислений. Однако при изменении объекта ArrayListObject не изменяется в подклассах, из того, что я вижу в отладчике.Указатель от одного класса к внешнему классу?

Есть ли способ сделать это указателем на другую переменную класса? Или самый подходящий способ справиться с этим, чтобы заставить подкласс получить ссылку на helperclass в конструкторе, чтобы вызвать метод helperclass.getArrayObject?

+5

Некоторый код или [sscce] (http://sscce.org/) были бы полезны здесь. – ulmangt

ответ

1

То, что вы пытаетесь выполнить, указатель, недоступен на Java. Чтобы обойти это, вы должны сделать ArrayListObject защищенным полем helperclass. Есть два пути отсюда:

  1. Если поле никогда не обращались за пределами класса и его подклассов, называющие super.mArrayList всякий раз, когда вам нужно значение.
  2. Если необходимо получить доступ к полю во всем мире, создайте общедоступный getArrayListObject(), который возвращает значение объекта.
+0

Это интересно, но это не помогло моей проблеме. ArrayList изменяется только с помощью вспомогательного класса и редко изменяется. – NoBugs

+0

Если он редко меняется, то отмените волатильность и сделайте личное поле с геттером. – gobernador

+0

И отправить ссылку на класс в конструкторе? Или есть лучший способ иметь такой указатель? – NoBugs

Смежные вопросы