Hi,
ich habe folgendes kleines Problem
Ich habe 2 config Objects von denen eins vom anderen erbt.
[code=Java]public class CxConfig {
HashMap<Integer, String> myHashMap = new HashMap<Integer, String>();
public void addValue(Integer key, String value){
myHashMap.put(key, value);
}
public String getValue(Integer key){
return myHashMap.get(key);
}
public String getModiValue(Integer key){
String modiValue = getValue(key); //#1
return modiValue + "_modi";
}
}[/code]
und
[code=Java]public class OConfig extends CxConfig{
public void addValue(Integer key, String value){
super.addValue((key - 1), value);
}
public String getValue(Integer key){
return super.getValue((key - 1));
}
public String getModiValue(Integer key){
return super.getModiValue((key - 1));
}
}[/code]
diese ergeben sich aus der geschichtlichen Entwicklung des codes.
Nun ein Beispiel wie es genutzt werden kann:
[code=Java] public static void main(String[] args) {
OConfig oc = new OConfig();
oc.addValue(1, "value one");
oc.addValue(2, "value two");
String value = oc.getModiValue(2);
System.out.println(value);
}[/code]
Da ich ja bei getModiValue die 2 mit reinnehme erwarte ich natürlich das ich "value two_modi" bekomme. Leider bekomme ich "value one_modi".
Dies kommt daher das bei #1 halt nicht die methode aus CxConfig sondern aus OConfig genommen wird. Daher wird von der ursprünglich mitgegebenen 2 zwei mal -1 gerechnet. Eigentlich darf es ja nur einmal -1 sein.
Nun endlich due Frage.
Wie kann ich bei #1 die methode getValue(key); dazu bringen nicht erst in oConfig zu springen sondern in CxConfig zu bleiben. Habe es schon mit this.getValue(key); probiert aber das klappt auch nicht.
(In getValue(key); ) passiert eigentlich noch ein bischen mehr als nur den Wert zu geben weshalb ich schon die methode benutzen möchte)
Hoffe jemand kennt eine super.Loesung 