Java 更改arraylist中对象的值
我发现这是有效的:Java 更改arraylist中对象的值,java,arraylist,set,Java,Arraylist,Set,我发现这是有效的: 我找到了一个让它工作的方法。与此相反: for(int i=0; i<alla.size(); i++){ if(alla.get(i).getClass().getName().equals("Aktie")){ alla.get(i).setKurs(0.0); } } 我想不出这个有什么问题。。我有一个不同对象的arraylist,在我的程序中有一个按钮,叫做stock market crash,它可以设置所有现有
我找到了一个让它工作的方法。与此相反:
for(int i=0; i<alla.size(); i++){
if(alla.get(i).getClass().getName().equals("Aktie")){
alla.get(i).setKurs(0.0);
}
}
我想不出这个有什么问题。。我有一个不同对象的arraylist,在我的程序中有一个按钮,叫做stock market crash,它可以设置所有现有的股票课程。我不知道我在arraylist中要找的单词是0.0。它不应该是这样的alla.geti.setKurs0.0;当我在arraylist中找到一个stock对象时,作为子类的stock类是否有一个公共的void集合kursdouble 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);
}
}
}
}
我相信Class.getName方法会返回包括包在内的完全限定类名
例如,在JDK 1.8文档中,getName注释包含以下示例:
String.class.getName()
returns "java.lang.String"
您正在测试没有包层次结构前言的类名。而不是
alla.get(i).getClass().getName().equals("Aktie")
试一试
alla.geti.getClass.getName将返回类的包和名称,例如java.lang.String而不仅仅是String。因为您没有向我们展示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);
}
}
}
}
就我个人而言,我认为Aktie的alla.geti实例会解决这个问题。虽然我认为如果你不把不同类型的物品放在一个收藏品里,你的生活会更轻松。如果你能把里面所有的东西都打给set,那不是很好吗 你检查过这个ifalla.geti.getClass.getName.equalsAktie是否返回true了吗?我找到了一个方法让它工作。而不是forint i=0;iYes,这是一种更合适的技术。但是使用instanceof仍然是最后的手段:你仍然错过了多态设计。
alla.get(i).getClass().getName().equals("Aktie")
alla.get(i) instanceof 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);
}
}
}
}