sagen, dass ich eine Klasse A haben, die alsHandhabung Statische Sammlungen in Java
public class A {
protected static float[] floatArray = null;
protected static Map<Integer, float[]> history = new HashMap<Integer,float[]>();
protected static Integer historyCount = 0;
public void runEverySecond(Populator objPopulator) {
floatArray = objPopulator.getValues();
history.put(historyCount, floatArray);
historyCount++;
}
}
und Klasse B sieht
public class B {
private A objA;
protected final static Populator objPopulator = new Populator();
public void run(Integer numOfTime) {
for(int i = 0; i < numOfTime; i++)
objA.runEverySecond(objPopulator);
}
}
und Klasse Populator sieht wie folgt aus
public class Populator {
protected float[] randomValues = new float[2];
public float[] getValues() {
randomValues[0] = //some new random float value generated for every call
randomValues[1] = //some new random float value generated for every call
return randomValues;
}
}
folgt ist
und Klasse mit Haupt sieht wie folgt aus
Hier ist das Problem, das ich bin vor, enthält die Karte Geschichte den gleichen Wert für jeden Eintrag in der Karte. Ich möchte, dass der Map-Verlauf alle von der objPopulator.getValues () -Methode generierten Werte speichert. Wie mache ich es?
würde Einige helfen wirklich spürbar sein. Dank im Voraus :)
der eigentliche Code (mit irrelevantem Code entfernt) nach Klasse stellte eine
public class MySuperAgent implements Agent {
protected static float[] marioFloatPos = null;
protected static Map<Integer, float[]> levelRecord = new HashMap<Integer, float[]>();
protected static Integer mapCount = 0;
/* protected static int testCount = 0;
protected static float[] testx = new float[2];
protected static float[] testy = new float[2];*/
@Override
public void integrateObservation(Environment environment) {
marioFloatPos = environment.getMarioFloatPos();
levelRecord.put(mapCount, marioFloatPos);
mapCount++;
/*if(testCount < 2){
testx[testCount] = marioFloatPos[0];
testy[testCount] = marioFloatPos[1];
testCount++;
} else {
testCount = 0;
}*/
}
}
Klasse C repräsentiert Umgebungsobjekt integrateObservation Methode aus der Klasse genannt ähnelt Klasse B Wenn ich der Code innerhalb des Kommentarblocks, dann kann ich nur 2 vergangene Werte von x und y von Mario aufzeichnen. Ich brauche einen Weg, um alle Werte von x und y von Mario zu speichern :)
Ich selbst würde mich nicht mit all diesen Statiken beschäftigen. –
Es gibt diese Dinge, die "Referenzen" in Java, "Zeiger" in anderen Sprachen genannt werden. Sie sind wundervolle Dinge, wenn Sie wissen, wie man sie benutzt. –
@HovercraftFullOfEels: haha .. ja all die Statik ist wirklich vermasselt .. leider kann ich nicht den Code in dieser Klasse ändern, weil es andere Anzahl von Klassen ist die Thesen Wert verwenden, und ich kann in diesen Klassen nicht-Code ändern, weil ich nicht bin zu :(.. – Pazuzu