假设我有3个不同的类(Class1,Class2,Class3),每个类都有一个名为“.update(String 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 :(得分: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}
...
...