Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改arraylist中对象的值_Java_Arraylist_Set - Fatal编程技术网

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);
          }
      }
   }
}