【发布时间】:2016-09-22 11:41:03
【问题描述】:
由于静态方法和变量,我的代码中有很多问题。 我是编程新手,我注意到当我在类中使用静态时,我可以在任何我想要的地方调用它。 下面的链接是我之前的问题(如果你需要,这就是为什么尝试不使用静态),有人告诉我删除解决我部分问题的方法的静态。
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;
}
【问题讨论】:
-
您的 getter 和 setter 不应该是静态的,它们用于获取或设置 Car 对象(实例)上的数据,而不是 Car 类上的数据。如果您想流线或简化您的汽车创建过程,请考虑使用 Builder 模式。如果您想在创建类时提供一些随机数据,请将其移到 Car 类之外,例如创建一个 CarDataProvider 类并在其中添加这些静态函数。
标签: java constructor static-methods