でのArrayListを使用する方法(私はインターフェイス(CarCompanyを作ってるんだ。)私は3つのクラス(<strong>カー</strong>(スーパー)、<strong>CarToRent</strong>、および<strong>CarToSell</strong>を持っているJavaの
をカーを拡張)としたいです私はこれをどのように行うのです。それに型車のArrayList
を保存する?助けてください?
でのArrayListを使用する方法(私はインターフェイス(CarCompanyを作ってるんだ。)私は3つのクラス(<strong>カー</strong>(スーパー)、<strong>CarToRent</strong>、および<strong>CarToSell</strong>を持っているJavaの
をカーを拡張)としたいです私はこれをどのように行うのです。それに型車のArrayList
を保存する?助けてください?
をあなたのCarCompany
インタフェースを実装するクラスから来ているオブジェクトのすべての種類を格納することができるようにArrayList<CarCompany>
を作成する必要があります。
「CarCompanyクラスはCarのArrayListを格納する必要があります」と表示されます。これは何を意味するのでしょうか?上記のコードを使用しますか?助けてくれてありがとう – MissBee
@MissBeeインターフェイスに情報を保存することはできません。インタフェースは、実装する必要のある契約のみを定義します。ファクトリーデザインパターンを使って車を作成/保管/管理してみませんか? – dexametason
インターフェイスでは、デフォルトですべての修飾子が最終的に設定されているため、属性を設定することはできません。したがって、インターフェイスに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));
}
}
import java.util.ArrayList;
ArrayList<TYPE> al = new ArrayList<TYPE>();
so if you need CarCompany
eg.
ArrayList<CarCompany> al = new ArrayList<CarCompany>();
はまた、この文書を見ている程度Class ArrayList
それはちょうど "クラスCarCompanyは、タイプCarのArrayListを格納する必要があります"と言います。これは何を意味するのでしょうか?上記のコードを使用しますか?助けてくれてありがとう – MissBee
あなたinterface
はいけません車のList
を持っている。 List
のゲッターとセッティングのメソッドを定義することができますが、定義するべきではありません。インタフェースを実装する具体的なクラスでは、List
を定義する必要があります。
public class CarCompany{
private List<Car> myList = new ArrayList<Car>();
}
"CarCompanyクラスはCarのArrayListを格納するクラス"というだけです。これは何を意味するのでしょうか?上記のコードを使用しますか?助けてくれてありがとう – MissBee
はい。上記の 'CarCompany'クラスは' Car'インスタンスの 'List'を含んでいます。 –
インターフェイスには何も格納できません。それはどんな状態もありません。それは動作(メソッド)を定義するだけです。 –
次回は、各ポスターに同じコメントを返信しないでください。 –