我发现这有效:)
我找到了让它发挥作用的方法。而不是:
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,我的程序中有一个按钮叫做#34;股市崩盘&#34;这应该将我的arraylists中的所有现有股票套餐(不知道我在这里寻找什么词)设置为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;
}
}
答案 0 :(得分:0)
我相信(Class).getName()
方法返回完全限定的类名(包括包)。
例如,从JDK 1.8文档中,getName()
注释包含此示例:
String.class.getName()
returns "java.lang.String"
您正在测试没有包层次结构前言的类名称。
答案 1 :(得分:0)
而不是
alla.get(i).getClass().getName().equals("Aktie")
试
alla.get(i) instanceof Aktie
alla.get(i).getClass().getName()
将返回该类的包和名称,例如java.lang.String
而非String
。
答案 2 :(得分:0)
由于您没有告诉我们alla
是如何填充的,因此无法确定是否有任何Aktie
。有很多建议的方法来解决这个问题。这里有一些调试代码可以让你清楚地知道问题的位置和修复时间。
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")){
System.out.println("Attempting to set kurs to 0.0 at i=" + i");//TODO remove debugging code
alla.get(i).setKurs(0.0);
}
}
}
}
我个人认为alla.get(i) instanceof Aktie
会解决它。虽然我认为如果你没有在集合中放置不同类型的对象,你的生活会更容易。如果你能在那里的所有东西上调用set(),那不是很好吗?