2015-10-04 72 views
0

每個類的方法說我有3級不同的類(1類,等級2,Class3的),並且每一分類具有一個被稱爲「.update(串x)」的方法。循環中調用更新()使用不同的參數

現在我想讀取一個.csv文件中的一行,我用逗號分隔這些值,並獲得每個字符串值被索引的列表,例如「Foo,bar,barz」變成{「foo」,「bar 「,」barz「)。

是否有可能在Java中爲每個類和字符串列表中的每個值創建一個對象列表(Obj1,Obj2,Obj3),並調用每個對象的.update對應的索引字符串列表作爲參數?

例如:

package Test; 

import java.util.ArrayList; 
import java.util.List; 

class Class1{ 
    private String string; 

    public void update(String s){ 
      this.string = s; 
    } 

    public String str(){ 
     return this.string; 
    } 
} 


class Class2{ 
    private String string; 

    public void update(String s){ 
     this.string = s; 
    } 

    public String str(){ 
     return this.string; 
    } 
} 


class Class3{ 
    private String string; 

    public void update(String s){ 
     this.string = s; 
    } 

    public String str(){ 
     return this.string; 
    } 
} 

public class Testing { 
    public static void main(String[] args) { 
     List<Object> object = new ArrayList<Object>(); 

     Class1 class1 = new Class1(); 
     Class2 class2 = new Class2(); 
     Class3 class3 = new Class3(); 

     object.add(class1); 
     object.add(class2); 
     object.add(class3); 

     String string_list[] = {"foo" , "bar", "barz"}; 

     for(int i = 0 ; i < object.size(); i++) { 
      object.get(i).update(string_list[i]); 
     } 
    } 
} 

hence obj1.update("foo"), obj2.update("bar"), obj3.update("barz") 

我一直在循環中得到一個「無法解析法」的錯誤。

Error:(68, 26) java: cannot find symbol 
symbol: method update(java.lang.String) 
location: class java.lang.Object) 

但是,當我將循環中的對象引用更改爲對象而不是引用時,它工作正常。從邏輯上看,它似乎是正確的,但它似乎像一個ArrayList列表不是正確的數據結構來保存對象?或者可能是這樣,我做錯了,任何人有任何建議,爲什麼它不工作,我怎麼能解決它? 謝謝。

+0

後完整的錯誤消息。 – John3136

+0

錯誤:(68,26)的java:找不到符號 符號:方法更新(java.lang.String中) 位置:類java.lang.Object – Vizan

+0

這是什麼語言?你試過的代碼在哪裏? – pelumi

回答

2

你可以做到這一點,但你需要你的對象的列表是聲明update()方法的類型。如果你想要這些對象是不同的類,你需要有一些接口或抽象類,所有這三個實現/擴展,並且該接口/抽象類應該聲明更新方法。

應該是這樣的:

public interface MyInterface { 
    public void update(String str); 
} 

public class Object1 implements MyInterface { 
    @Override 
    public void update(String str) { 
    ... 
    } 
} 

/// same for object 2 and 3 

String[] string_list = {"foo", "bar", "barz"} 
MyInterface[] obj_list = {Obj1, Obj2, Obj3} 

... 
... 
+0

非常感謝:) – Vizan