2015-07-18 2 views
1

У меня возникли проблемы с пониманием часть класса слайде, который говорит:Концепция ArrayBag

Запоминание позиции в качестве ArrayBag:
Мы хранящие элементы в массив типа Object.

public class ArrayBag implements Bag { 
    private Object[] items; 
    private int numItems; 
.... 
} 

Это позволяет хранить любой тип объекта в массиве предметов, благодаря силе полиморфизма:

ArrayBag bag = new ArrayBag(); 
bag.add("hello"); 
bag.add(new Double(3.1416)); 

ли ArrayBag конкретный тип объекта или это просто Имя переменной Obj?
Зачем нам нужно бросать 3.1416 в виде Двойного и добавлять новое?
(я знаю, что код может быть просто быть bag.add (3,1416) и Java будет Autobox это для вас, но у меня возникают проблемы с пониманием смысла за bag.add (новый двойной (3,1416)).

+0

Вы следуете за этой книгой Структуры данных и другие объекты с использованием JAVA ?? – ganeshvjy

+1

Это скорее датирован; интерфейс 'Bag' должен использовать generics, и нет необходимости вызывать' new Double() 'с Java 1.5. Я бы не стал полагаться на эту презентацию для современных передовых методов. – dimo414

ответ

0

ли ArrayBag конкретного типа объекта или его просто Obj переменной имя?

ArrayBag не является ни конкретным типом объекта не св Obj переменной, его на самом деле класса.

Зачем нам нужно бросать 3.1416 в качестве двойника и добавлять новые? не

Нет вам не нужно явно кастовал double, как AutoBoxing входит в картину (Java 1.5 и выше) и конвертировать double в Double т.е. от примитивного к объекту.

У меня возникли проблемы с пониманием смысла за bag.add (новый Double (3,1416)

bag на самом деле является экземпляром ArrayBag и add() является метод, определенный в этом классе, который принимает параметр типа Object и может добавить его в массив items, который представляет собой всего лишь массив из Object.

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