【问题标题】:How to use List<String> as argument如何使用 List<String> 作为参数
【发布时间】:2016-12-30 10:18:31
【问题描述】:

我正在使用 Firebase 编写一个 Android 应用程序并希望将一个对象写入数据库:

public class newEvent {

public String whoEv;
public String whereEv;
public String whenEv;
public String whatEv;

public newEvent() {}

public newEvent(String whoEv, String whereEv, String whenEv, String whatEv) {
    this.whoEv = whoEv;
    this.whereEv = whereEv;
    this.whenEv = whenEv;
    this.whatEv = whatEv;
}
}

这可行,但正如您所见,它们都是“只是”字符串。我想要的是第一个参数是一个列表,Firebase 不允许 String[] 上传/写作。 原因是能够将更多名称作为分隔的Strings/Objects 传递到whoEv。 (给每个名字一个boolean,如果他们来或不来)。 现在回到确切的问题:

public newEvent(List<String> whoEv, String whereEv, String whenEv, String whatEv) {
    this.whoEv = whoEv;
    this.whereEv = whereEv;
    this.whenEv = whenEv;
    this.whatEv = whatEv;
}

当我使用它时,我不知道如何编写正确的代码:

newEvent test = new newEvent(List<String>("derp","max"), "Amsterdam", "31/12/2016", "NewYears Eve");

以上显然行不通。 Expression expectedunexpected token。我错过了什么或做错了什么?已经感谢您阅读本文!

编辑:使用List&lt;String&gt;如果我想用字符串传递布尔值的完全白痴想法......虽然不知道要使用什么。

【问题讨论】:

  • 你可以试试 java.util.Arrays.asList(..) docs.oracle.com/javase/7/docs/api/java/util/Arrays.html
  • 尝试使用这个构造函数 - 1) public newEvent(ArrayList whoEv, String whereEv, String whenEv, String whatEv) {} 2) newEvent test = new newEvent(new ArrayList(" derp","max"), "阿姆斯特丹",
  • @Arjit 看起来这就是解决方案,即使我收到错误消息:Cannot resolve constructor 'ArrayList(java.lang.String, java.lang.String)
  • 是的,它不起作用。您需要创建一个 ArrayList arr = new ArrayList();arr.add("derp");arr.add("max");将此 arr 传递给您的构造函数

标签: java android arraylist firebase firebase-realtime-database


【解决方案1】:

修复它: newEvent test = new newEvent("Meppel", "31/12/2016", "Oudjaarsdag", new String[]{"derp", "Sir", "max"});

在课堂上: `公共类新事件{

public ArrayList<String> wie;
public String waar;
public String wanneer;
public String wat;

public newEvent() {}

public newEvent(String waar, String wanneer, String wat, String... wie) {
    this.wie = new ArrayList<>(Arrays.asList(wie));
    this.waar = waar;
    this.wanneer = wanneer;
    this.wat = wat;
}

【讨论】:

  • 这纯粹是为了调试和测试,这就是它如此硬编码的原因。
【解决方案2】:

List 是一个接口,没有实现类是不能直接使用的。您可以使用实现 List 接口的默认 jdk 提供的类之一。例如 ArrayList、LinkedList。

通过List Implementations 上的此链接,您将了解如何将字符串列表作为参数传递。

【讨论】:

  • 你能解释一下吗?我不知道如何写论点:new newEvent(["derp","max"],...
【解决方案3】:

是 Java 吗?可能您需要在 List 之前添加“新”一词... 并且不要忘记List是一个接口类型,所以这里需要使用一些继承类。 ArrayList 例如

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 2023-03-06
    • 1970-01-01
    • 2012-02-08
    相关资源
    最近更新 更多