2012-04-16 16 views
1

でのArrayListを使用する方法(私はインターフェイス(CarCompanyを作ってるんだ。)私は3つのクラス(<strong>カー</strong>(スーパー)、<strong>CarToRent</strong>、および<strong>CarToSell</strong>を持っているJavaの

をカーを拡張)としたいです私はこれをどのように行うのです。それに型車のArrayListを保存する?助けてください?

+1

インターフェイスには何も格納できません。それはどんな状態もありません。それは動作(メソッド)を定義するだけです。 –

+1

次回は、各ポスターに同じコメントを返信しないでください。 –

答えて

1

をあなたのCarCompanyインタフェースを実装するクラスから来ているオブジェクトのすべての種類を格納することができるようにArrayList<CarCompany>を作成する必要があります。

+0

「CarCompanyクラスはCarのArrayListを格納する必要があります」と表示されます。これは何を意味するのでしょうか?上記のコードを使用しますか?助けてくれてありがとう – MissBee

+0

@MissBeeインターフェイスに情報を保存することはできません。インタフェースは、実装する必要のある契約のみを定義します。ファクトリーデザインパターンを使って車を作成/保管/管理してみませんか? – dexametason

3

インターフェイスでは、デフォルトですべての修飾子が最終的に設定されているため、属性を設定することはできません。したがって、インターフェイスにgetおよびsetメソッドを宣言するだけです。実装者が属性を持ち、それらのメソッドをオーバーライドさせる。

public interface CarCompany { 
    List<? extends Car> getCarList(); 
    void setCarList(List<? extends Car> carList); 
} 

UPDATE:

List<Car> carList = new ArrayList<Car>(); 
:あなたは、代わりに Listインタフェースを使用することができた場合でも

まず、あなたはArrayListは(:What does it mean to "program to an interface"?これについての詳細)そのインタフェースを実装し、ArrayListを使うべきではありません

第2に、スーパークラスを使用している場合は、そのクラス生成をすべてサポートするテンプレートではなく、スーパークラス用のリスト属性であってはなりません。これのサンプルを見てみましょう:別の方法でとList<CarToSell>を返すDAOクラスがあります。その後、ビジネスクラスでは、List<Car>のすべての要素を読んで、車のpriceを数式に使用する必要があります。 をList<Car>に、List<CarToSell>List<Car>に変換する方法を作成しますか?CarWorkshopの場合、のような新しい子を後でCarに作成する必要がある場合は、3番目のコンバーターを作成しますか?だから、代わりにすべてのことの痛みで、あなたはあなたのために、「汚れ仕事」があることを行うList<? extends Car>を使用することができます。

public void executeSomeFormula(List<? extends Car> carList) { 
    //getting the actual VAT value (just for a sample); 
    double actualVAT = getActualVATValue(); 
    //every object in the list extends Car, so it can be threatened as a Car instance 
    for(Car car : carList) { 
     car.setTotalPrice(car.getPrice() * (1 + actualVAT)); 
    } 
} 
+0

「CarCompanyクラスは、Car型のArrayListを格納する必要があります。これは何を意味するのでしょうか?上記のコードを使用しますか?助けてくれてありがとう。 – MissBee

+0

@MissBeeは答えの更新を確認します:) –

+0

ありがとうございます。私はこれを代わりに試みます。:) – MissBee

0
import java.util.ArrayList; 

ArrayList<TYPE> al = new ArrayList<TYPE>(); 
so if you need CarCompany 
eg. 
ArrayList<CarCompany> al = new ArrayList<CarCompany>(); 

はまた、この文書を見ている程度Class ArrayList

+0

それはちょうど "クラスCarCompanyは、タイプCarのArrayListを格納する必要があります"と言います。これは何を意味するのでしょうか?上記のコードを使用しますか?助けてくれてありがとう – MissBee

0

あなたinterfaceはいけません車のListを持っている。 Listのゲッターとセッティングのメソッドを定義することができますが、定義するべきではありません。インタフェースを実装する具体的なクラスでは、Listを定義する必要があります。

public class CarCompany{ 
    private List<Car> myList = new ArrayList<Car>(); 
} 
+0

"CarCompanyクラスはCarのArrayListを格納するクラス"というだけです。これは何を意味するのでしょうか?上記のコードを使用しますか?助けてくれてありがとう – MissBee

+0

はい。上記の 'CarCompany'クラスは' Car'インスタンスの 'List'を含んでいます。 –