я обнаружил, что это работает :)Изменение значения объекта в ArrayList
Я нашел способ, чтобы заставить его работать. Вместо этого:
for(int i=0; i<alla.size(); i++){
if(alla.get(i).getClass().getName().equals("Aktie")){
alla.get(i).setKurs(0.0);
}
}
Я получил эту работу:
for(Värdesak v : alla){
if(v instanceof Aktie){
((Aktie)v).setKurs(0.0);
}
}
Я не могу понять, что случилось с этим .. У меня есть ArrayList различных объектов, и у меня есть в моей программе, которая называется «крах фондового рынка», который должен установить все существующие курсы акций (не знаю, какое слово я ищу здесь) в моих архаристах до 0.0. не должно быть так alla.get (i) .setKurs (0.0);, когда я обнаружил один объект запаса в моем arraylist, если класс запаса (который является подклассом) имеет public void setKurs (double kurs) {this.kurs = kurs; }?
Я отправлю мой код здесь:
Это моя кнопка
class börsLyssna implements ActionListener{
public void actionPerformed(ActionEvent ave){
for(int i=0; i<alla.size(); i++){
if(alla.get(i).getClass().getName().equals("Aktie")){
alla.get(i).setKurs(0.0);
}
}
}
}
__
abstract class Värdesak{
private String namn;
protected Värdesak(String namn){
this.namn = namn;
}
public String getNamn(){
return namn;
}
abstract public double getVärde();
public String toString(){
return namn + ", "+ "värde: "+(getVärde()*1.25);
}
}
class Aktie extends Värdesak{
private int antal;
private double kurs;
public Aktie(String namn, int antal, double kurs){
super(namn);
this.antal = antal;
this.kurs = kurs;
}
public double getVärde(){
return (antal*kurs);
}
public String toString(){
return super.toString()+", antal: "+antal+" med en kurs på: "+kurs;
}
public void setKurs(double kurs) {
this.kurs = kurs;
}
public double getKurs() {
return kurs;
}
}
Вы проверили, что это 'if (alla.get (i) .getClass(). GetName(). Equals (" Aktie "))' возвращается true? – DigitalNinja