Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Переопределение поля другим типом. / 4 сообщений из 4, страница 1 из 1
20.07.2012, 19:27:18
    #37887541
jab
jab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение поля другим типом.
Как бы переопределений полей нет, но мне нужно чтоб тип одного поля стыл из ArrayList в HashSet.
Не совсем уверен как правильно это реализовать.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public class A {

    ArrayList<Item> items;
    String params;

    public A(String params) {
        super();

        this.items = new ArrayList<Item>();
        this.params = params;
    }

    public void addItem(Item item) {
        items.add(item);
    }

    public ArrayList<Item> getItems() {
        return items;
    }
}



далее рисую следующий класс

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class B extends A {
 
    HashSet<Item> items;

    public B(String params) {
        super(params);

        this.items = new HashSet<Item>();
    }
}



Вроде не ругается. Будет ли так работать как надо? Хочу, чтою только уникальные Item в классе B были. Для Item методы эквивалентности и хэша переопределил. Или в классе B нужно переопределить методы addItem и getItems? Как бы непонятно что вернет getItems в данном случае.
...
Рейтинг: 0 / 0
20.07.2012, 20:14:42
    #37887574
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение поля другим типом.
Вот так покрасивее будет. Только непонятно, зачем это нужно.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
public abstract class ItemsHolder {

    Collection<Item> items;
    String params;
    
    protected ItemsHolder(String params) {
      this.params = params;
   }

    public void addItem(Item item) {
        items.add(item);
    }

    public Collectiont<Item> getItems() {
        return items;
    }
}

class ListHolder extends ItemsHolder {
    public A(String params) {
       super(params);
        this.items = new ArrayList<Item>();
    }

    public List<Item> getItems() {
        return items;
    }

}

class SetHolder extends ItemsHolder {
    public A(String params) {
        super(params);
        this.items = new HashSet<Item>();
    }

    public Set<Item> getItems() {
        return items;
    }

}
...
Рейтинг: 0 / 0
20.07.2012, 20:30:03
    #37887579
jab
jab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение поля другим типом.
Да, я тоже подумал было через абстрактный класс или через интерфейс. Но тут придется поковырять код, посмотреть на что эта переделка повлияет ещё. Это нужно, чтоб использовать стандартное огрнаичние на уникальность реализации интерфейса сетов, а не городить свой цикл проверки на уникальность. Но я пока нагородил свой метод проверки прежде чем писать в арэйлист. Ладно, спасибо пока на этом. Потом может переделаю, если руки дойдут.
...
Рейтинг: 0 / 0
20.07.2012, 20:53:35
    #37887590
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение поля другим типом.
jabНо я пока нагородил свой метод проверки прежде чем писать в арэйлистпокажи-ка )
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Переопределение поля другим типом. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]