Сеттеры на основе индекса массива в Java
У меня есть следующее:
public class Car{
public Car()
{//some stuff
}
private Car [] carmodels ;
public Car [] getCarModel() {
return this.carmodels;
}
public void setcarModel(Car [] carmodels ) {
this.carmodels = carmodels;
}
Сейчас в моем тестовом классе, у меня есть что-то вроде этого
public void main (String [] args)
{
Car car1= new Car();
car.setcarModel(new Car[5]);//here i create an array of Car
for(int i =0;i<5;i++)
{
// how can i created 5 cars and set them based on index i
// car.setCarModel[new Car()]????
}
}
Как это сделать? Я мог бы использовать временный массив типа Car, который я могу передать своему Setter сразу после цикла. Но есть ли лучший способ?
4 ответа
Добавьте установщик, который принимает индекс:
public void setCarModel(int index, Car carModel) {
this.cardmodels[index] = carModel;
}
Затем, внутри вашего цикла, позвоните
car.setCarModel(i, new Car());
Смотрите метод getCarModel
? Этот метод возвращает Car[]
право? Это означает, что вы можете делать с массивом все, что можете car1.getCarModel()
!
Итак, как вы установите элемент по индексу массива? Ты делаешь это:
someArray[someIndex] = someValue;
Если мы применим это к массиву, возвращенному car1.getCarModel
,
car1.getCarModel()[i] = new Car();
Это способ сделать это.
Кроме того, вы можете написать другой метод в Car
который устанавливает элемент в массиве моделей автомобилей:
public void setItemInCarModels(int index, Car item) {
carModels[index] = item;
}
Просто!
Кстати, ваша модель не имеет смысла...
Если вы настаиваете на том, чтобы не использовать временное значение в цикле for, вы можете использовать ArrayList вместо массива для кармоделей.
чем добавить метод
public void addCar(Car toadd)
{
carmodels.add(toadd);
}
чем в вашей петле foor просто позвоните
for(int i =0;i<5;i++)
{
car.addCar(new Car());
}
Я предполагаю, что размер может варьироваться и что массив с фиксированным размером недостаточен.
for(int i =0;i<5;i++)
{
car.getCarModel()[i] =new Car();
}
или же
Напишите другой перегруженный установщик, передав индекс.
public void setCarModel(int index, Car c)
{
carmodels[index] = c;
}
for(int i =0;i<5;i++)
{
car.setCarModel(i, new Car());
}