Ali Majed HA Ответов: 2

Как получить доступ к элементам внутри linkedlist в java


У меня занятия:
public class HarddriveStorage {
...
}


Я делаю экземпляры созданного класса:
HarddriveStorage hds1 = new HarddriveStorage ();
HarddriveStorage hds2 = new HarddriveStorage ();
HarddriveStorage hds3 = new HarddriveStorage ();


Затем я добавляю их в связанный список:
LinkedList hdList = new LinkedList();
hdList.add(hds1);
hdList.add(hds2);
hdList.add(hds3);


Когда я хочу получить доступ к объектам, я получаю ссылку вместо значения:
hdList.get(1);


Я получаю:
org.cloudbus.cloudsim.HarddriveStorage@578486a3


Что я должен сделать, чтобы получить, например, "hds2" взамен?

Что я уже пробовал:

Я читал документы в интернете, но не смог этого сделать.

2 Ответов

Рейтинг:
18

Thomas Daniels

Ваш метод прекрасен. org.cloudbus.cloudsim.HarddriveStorage@578486a3 это просто строковое представление объекта.

Редактировать:

Поскольку .get возвращает объект, вы должны вернуть возвращаемое значение обратно в HarddriveStorage:

HarddriveStorage myHD = (HarddriveStorage)hdList.get(1);


Ali Majed HA

Я хочу получить доступ к методам и переменным объекта. Как мне это сделать?

Thomas Daniels

HarddriveStorage yourObject = hdList.get(1);
yourObject.callYourMethod();

Ali Majed HA

Если я скажу:
HarddriveStorage MyHD = hdList.get(1);

Ошибка заключается в следующем:
"несовместимые типы: объект не может быть преобразован в HarddriveStorage."

а если я скажу:
Объект MyHD = hdList.get(1);

Я не могу получить доступ к методам внутри HarddriveStorage.
Мой отец.
просто дайте мне ограниченный выбор.

Thomas Daniels

Ах да, LinkedList хранит объекты. Вы должны привести возвращаемое значение к HarddriveStorage следующим образом:

HarddriveStorage myHD = (HarddriveStorage)hdList.get(1);

Ali Majed HA

Большое спасибо, мой друг.

CPallini

Предположим, что ваш HarddriveStorage имеет метод, называемый brand() тогда вы можете писать

HarddriveStorage h1 = (HarddriveStorage)hdlist.get(1);
String h1brand = h1.brand();

Примечание. приведение требуется, потому что вы используете не универсальный контейнер.

Ali Majed HA

Вот именно! Большое спасибо.

CPallini

Добро пожаловать.

Рейтинг:
1

CPallini

Цитата:
Когда я хочу получить доступ к объектам, я получаю ссылку вместо значения:

Цитата:
Что я должен сделать, чтобы получить, например, "hds2" взамен?

hds2 это просто имя переменной, а не значение объекта.
get возвращает ссылку на объект, и вы можете использовать ее для получения всех свойств такого объекта.


Ali Majed HA

Как я могу получить доступ к методам и переменным объекта "hds2"?