2015-10-04 74 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