gpt4 book ai didi

java - 不能连接 String[] 因为它存储在一个对象中

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:09:00 24 4
gpt4 key购买 nike

我是 Java 的新手,在处理一些简单的事情时遇到了困难。我创建了一个如下所示的 vector ,其中第三个元素是字符串数组,而不是字符串本身。

this.myvec = new Vector();
myvec.add("a");
myvec.add("b");
myvec.add(new String[]{
"c",
"d",
"e",
"f");

稍后我想迭代这个,但是因为有些元素是字符串,有些是字符串数组,所以我必须这样做。但是我也想记录它,所以我有一个根据类型发送到不同日志语句的条件。

但是对于数组,我想加入它,如下所示。

for (Object myobj : myvec) {
if (myobj.getClass().equals(String.class)) {
log.info("My object is " + myobj);
}
else {
log.info("My object is " + String.join(",", myobj));
}

第二条日志语句无法编译,因为您不能将对象作为 String.join 的第二个参数。我怎样才能让它发挥作用?

最佳答案

如果您真的想在 Vector 中使用混合类型,可以使用 instanceof关键词:

Vector<Object> myvec = new Vector<>();
myvec.add("a");
myvec.add("b");
myvec.add(new String[] {"c", "d", "e", "f"});
myvec.add(1); // Added to test the Unknow type object

for (Object myobj : myvec) {
String myobjAsString = "Unknown"; // default

if (myobj instanceof String) {
myobjAsString = (String)myobj;
} else if (myobj instanceof String[]) {
String[] myarray = (String[])myobj;
myobjAsString = String.join(",", myarray);
}

System.out.println("My object is " + myobjAsString);
}

打印出来:

My object is a
My object is b
My object is c,d,e,f
My object is Unknown

旁注:

  • 将您的 Vector 声明为对象的 Vector:Vector<Object> .这是一个通用类。参见 Vector ApiGeneric Types
  • Vector 仅在非常特定的情况下才首选(具体到我想不出一个),我认为您不应该为您的水平而烦恼,您可能更愿意使用 ArrayLists<T>在大多数情况下(如果不是全部的话)。参见 Vector Vs ArrayList

  • 要使用 ArrayList 而不是 Vector,只需声明:

    List<Object> myvec = new ArrayList<>();

    其余代码相同。

关于java - 不能连接 String[] 因为它存储在一个对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49057108/

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