Читайте также:
|
|
Метод addMoney() позволяет нам добавить банкноту в наш кошелек. Вспомните, что наши "банкноты" представляют собой простые целые числа. Для добавления их в нашу коллекцию мы заключаем int в Integer.
Метод spendMoney() тоже работает с упаковкой для проверки наличия банкноты в нашем кошельке, вызывая методcontains(). Если она есть, мы вызываем remove() для ее извлечения. Если нет, мы говорим об этом.
Давайте применим эти методы в main(). Замените его текущее содержимое на следующий код:
public static void main(String[] args) { Adult myAdult = new Adult(); myAdult.addMoney(5); myAdult.addMoney(1); myAdult.addMoney(10); StringBuffer bills = new StringBuffer(); Iterator iterator = myAdult.getWallet().iterator(); while (iterator.hasNext()) { Integer boxedInteger = (Integer) iterator.next(); bills.append(boxedInteger); } System.out.println(bills.toString()); } |
В методе main() скомбинировано много действий, о которых мы уже знаем. Прежде всего, мы вызываем addMoney()несколько раз для помещения денег в кошелек. Затем в цикле проверяем содержимое кошелька и выводим эту информацию. Для этого используем цикл while, но необходимо выполнить некоторую дополнительную работу. Мы должны:
· Получить Iterator для списка, который позволит нам обращаться к элементам в списке.
· Вызвать метод hasNext() объекта Iterator в качестве булевого выражения нашего цикла для того, чтобы определить, есть ли у нас еще элементы для обработки.
· Вызвать метод next() объекта Iterator для получения следующего элемента каждый раз при прохождении цикла.
· Привести тип (или преобразовать) возвращаемого объекта в тип элементов, находящихся в списке (в данном случае Integer)
Это стандартная процедура для прохождения по коллекции в языке Java. В качестве альтернативы, мы могли бы вызвать toArray() и получить массив, по которому мы могли бы пройти при помощи цикла for. Но более объектно-ориентированный способ - это использовать возможности библиотеки Java Collections.
Единственной новой концепцией здесь является приведение типов. Что это такое? Как мы уже знаем, объекты в языке Java имеют тип или класс. Если вы посмотрите на сигнатуру метода next(), то увидите, что он возвращает Object, а не конкретный подкласс Object. Все объекты в мире Java-программирования являются подклассами Object, но язык Java должен знать конкретный тип объекта, для того чтобы вы могли вызывать методы, специфичные для типа, с которым работаете. Если вы не выполните приведение типа, то будете ограничены только методами, доступными для Object, которые составляют довольно небольшой список. В данном примере нам не нужно вызывать какие-либо методы классаInteger, но если бы мы делали это, то должны были бы сначала выполнить приведение типов.
Дата добавления: 2015-09-11; просмотров: 30 | Поможем написать вашу работу | Нарушение авторских прав |