У меня было много проблем в моем коде из-за статических методов и переменных. Я новичок в программировании, и я заметил, что когда статирую в классе, я могу назвать его везде, где захочу. Ниже приведен мой предыдущий вопрос (если вам нужно, просто зачем пытаться не использовать статический), где кто-то сказал мне удалить статическую информацию для метода, который решил часть моей проблемы.Метод доступа из другого класса Нет статического?
PS: английский - это мой третий язык, поэтому это может быть плохо. Но, пожалуйста, помогите мне, я застрял
Get random object from arraylist specific variable
Так моя проблема:
У меня есть конструктор для создания автомобилей и параметр заполняются функциями. Но поскольку объект еще не создан, я не могу получить методы. Есть ли способ, которым я не могу назвать их? Это мой код:
Прямо сейчас Cars.getPosition()
Подчеркнуто красным цветом и его указание сделать его статичным.
Из класса гаража, где создаются машины:
public void addCar() {
Cars car = new Cars(Cars.getID(), Cars.askCarID(), Cars.getPosition(), Attendant.askForAtt(), System.currentTimeMillis());
myGarage.add(car);
if(!(car.getAssignedTo()).equals(null)){
car.getAssignedTo().setAssign(car);
car.getAssignedTo().setAvailable(false);
}
}
От класса автомобиля:
private static void createCarsID() {
for (int x = 0; x < Garage.getCarsCapacity(); x++) {
String tempCarID = ("CR" + (x + 1));
tempArray2.add(tempCarID);
}
}
public static String getID() {
createCarsID();
String tempID = null;
String tempPos = null;
for (int x = 0; x < Garage.getCarsCapacity(); x++) {
if (tempArray2.get(x) != null) {
tempID = tempArray2.get(x);
tempPos = tempArray2.get(x);
tempArray2.remove(tempArray2.get(x));
getPos(tempPos);
//tempArray2.get(x) = null;
break;
}
}
return tempID;
}
public void getPos(String IdToPos) {
String strPos = IdToPos.substring(2);
int pos = Integer.parseInt(strPos);
position = "GR" + pos;
}
Ваш геттер и сеттер не должны быть статичными, они используются, чтобы получить или установить данные об объекте автомобиля (например) не на Класс автомобиля. Если вы хотите потоковой линии или упростить процесс создания автомобиля, пожалуйста, используйте шаблон Builder. Если вы хотите предоставить некоторые случайные данные при создании класса, переместите его за пределы своего класса Car, например, сделайте класс CarDataProvider и добавьте туда эти статические функции. –