Создавать объекты с помощью вспомогательного класса - PullRequest
0 голосов
/ 13 июня 2019

Я хочу создать экземпляр моего объекта, автомобиля. У меня проблема в том, что я могу создать экземпляр объекта car, например, Car car1 = new car ("Audi", "A4", "BF10YMR"); однако я хочу создавать автомобильные объекты через вспомогательный класс. Как мне вызвать этот вспомогательный класс в main, чтобы он относился к типу car, а не к типу carHelper?

Автомобильный объект требует создания случайного регистрационного номера, который создается в классе carHelper. Объект возвращается.

public class Car implements Comparable<Car>
{
   public class Car
   {
    private String make;
    private String model;
    private String registration;  

   public Car(String make, String model, String reg)
   {
   this.make= make;
   this.model= model;
   registration = reg;
   }
}

public class carHelper
{
  public car genCar()
  {
    String reg =   //some method to generate random registration.
    String Make =  //some method to randomly pick make from a list
    String model = //some method to randomly pick model from a list
    return new Car(make,model,registration);
   }
 } 

public class Garage
{
   public static void main (String args[])
   {
    Garage MyGarage = new Garage(); 
    Car car1 = new Car("Audi","A4","BF10YMR") //works, but doesn't use helper                                                                       
    Car car2 = carHelper.genCar();   // something like this?

    carHelper c = new carHelper();   // thought something like this but
    System.out.println(c.genCar());  // creates object of type carHelper 
                                     // not car.

   MyGarage.add(car1); 
   MyGarage.add(car2);   // gives me carHelper cannot be converted to Car

   }
}

public class GarageOp implements CarList
{
  public GarageOp()
  {
   list = new ArrayList<Car>(); 
  }

public boolean add(Car car) 
{
  if (list.contains(car) == false)
  {
     list.add(car); 
     return true;
  }
}

}

Ожидаемый результат - создать объект car с помощью вспомогательного класса и добавить его в ArrayList.

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Вы можете создать эти списки в CarHelper, а затем случайным образом выбрать значения и создать новый автомобиль с ними. UUID создает случайное 128-битное (включая шестнадцатеричное) число и преобразует его в строку

public class CarHelper {

    private List<String> makeList = Arrays.asList("s", "t", "f", "n");
    private List<String> modelList = Arrays.asList("yyt", "32g", "dc3", "aas");

    public Car genCar() {
        String reg = UUID.randomUUID().toString();
        String make = makeList.get(new Random().nextInt(makeList.size() - 1));
        String model = modelList.get(new Random().nextInt(modelList.size() - 1));
        return new Car(make,model,reg);
    }
} 
0 голосов
/ 13 июня 2019

Сделайте метод genCar () статическим в классе CarHelper.

public car static genCar(){
    // do stuff to create object
}

нестатический метод может обращаться к статической переменной или вызывать статический метод в Java.

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