Подтверждение этого наследства является действительным - PullRequest
0 голосов
/ 12 февраля 2012

Я создаю класс CustomerList, в настоящее время:

package somestuff;

import java.util.ArrayList;

public class CustomerList {

    ArrayList<Customer> custList;

}

Я хочу, чтобы он расширял ArrayList;будет ли это действительным отношением "is-a" (CustomerList является ArrayList)?

Редактировать: Извинения, я не сделал этот пост слишком яснымМой план состоит в том, чтобы сделать это частью веб-сайта JSP;Я бы запросил базу данных и использовал бы Customer и CustomerList для хранения результатов.Моя теория состоит в том, что все будет проще, если я захочу изменить порядок их вывода.

Ответы [ 4 ]

3 голосов
/ 12 февраля 2012

Нет, это has-a отношение. is-a будет, если вы расширяете (класс) или реализуете (интерфейс).

Не проще ли использовать ArrayList<Customer> при необходимости?

0 голосов
/ 12 февраля 2012

Вы также можете использовать делегирование.

class Customer{}
class CustomerList extends AbstractList<Customer>{

    private final List<Customer> customers;
    public CustomerList(List<Customer> customers){
        this.customers = customers;
    }
    @Override
    public Customer get(int index) {
        return customers.get(index);
    }

    @Override
    public int size() {
        return customers.size();
    }

    //Override more methods as needed
}

Это зависит от того, что вы хотите сделать.Однако использовать композицию проще и приятнее.

0 голосов
/ 12 февраля 2012

Вы можете превратить это в отношение is-a, либо расширив (как сказал Биньямин Шарет), либо расширив интерфейс java.util.List и делегировав выполнение методов на custList (посмотрите Джошуа Блох).

0 голосов
/ 12 февраля 2012

Если вы хотите действительно расширить ArrayList, правильный метод:

public class CustomerList extends ArrayList<Customer> {

    // ... add/override methods here

}

Какую функциональность вы хотите добавить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...