2012-02-12 2 views
0

です:確認この継承は、私は現在、CUSTOMERLISTクラスを作成しています有効

package somestuff; 

import java.util.ArrayList; 

public class CustomerList { 

    ArrayList<Customer> custList; 

} 

は、私はそれがArrayListのを拡張したいです。これは有効な "is-a"関係(CustomerListはArrayList)ですか?

編集:謝罪、私はこの投稿をあまりにも明確にしていません。私の計画は、これをJSPのWebサイトの一部として持つことです。私はデータベースにクエリを行い、結果を保存するためにCustomerとCustomerListを使用します。私の理論は、出力される順番を変えたいと思えば、物事を楽にするということです。

+0

いいえ、この顧客リストにはアレイリストがあります –

+0

宿題の場合は、宿題タグを追加してください。 –

答えて

3

いいえ、これはhas-aの関係です。 is-aは、拡張(クラス)または実装(インターフェイス)の場合になります。

必要に応じてArrayList<Customer>を使用するほうが簡単ではないでしょうか?

+0

'ArrayList 'によって提供されるものに加えて、おそらく 'CustomerList'に必要な操作があります。逆に、 'ArrayList 'には、特に望ましくない操作があります。なぜ 'List'が' Set'よりも好ましいべきなのか、なぜ具体的にこの特定の実装である必要があるのか​​を知るのは難しいです。 –

+0

真実ですが、OPの例ではこのような操作は見られませんでした。 – MByD

0

あなたが本当にArrayListを拡張したい場合は、適切な方法は次のとおりです。

public class CustomerList extends ArrayList<Customer> { 

    // ... add/override methods here 

} 

機能はどのような追加したいですか?

+0

私の計画はこれをJSPのWebサイトの一部として持つことでした。私はデータベースにクエリを行い、結果を保存するためにCustomerとCustomerListを使用します。私の理論は、出力される順番を変えたいと思えば、物事を楽にするということです。 –

0

あなたは(Binyamin Sharetが言ったように)拡張によって、または(ジョシュア・ブロックを検索)java.util.Listインターフェースを拡張し、custListにメソッドの実行を委譲することによってis-a関係にこれを変えることができます。

0

委任を使用することもできます。

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 
} 

あなたのやりたいことによって異なります。 しかし、構成を使用する方が簡単ですばらしいです。

関連する問題