gpt4 book ai didi

java - 使用不同的参数循环调用每个类的 update() 方法

转载 作者:行者123 更新时间:2023-12-02 04:19:31 27 4
gpt4 key购买 nike

假设我有 3 个不同的类(Class1、Class2、Class3),每个类都有一个名为“.update(String x)”的方法。

现在我想读取 .csv 文件中的一行,我用逗号分隔值并获取每个字符串值索引的列表,例如“Foo, bar, barz”变为 {“foo”, “bar” ,“巴兹”)。

是否可以在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 列表似乎不是保存对象的正确数据结构?或者也许是这样,我做错了,有人有任何建议为什么它不起作用以及我如何修复它?谢谢。

最佳答案

您可以这样做,但为此您需要对象列表的类型声明 update() 方法。如果您希望对象属于不同的类,则需要有一些所有三个实现/扩展的接口(interface)或抽象类,并且该接口(interface)/抽象类应该声明 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}

...
...

关于java - 使用不同的参数循环调用每个类的 update() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32938843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com