【问题标题】:Java select list attribute via another wayJava通过另一种方式选择列表属性
【发布时间】:2019-09-03 08:43:49
【问题描述】:

我有一个问题。我最近开始研究 Java,想知道是否可以选择这样的列表属性

列表[“属性”]?我想要这个,因为我有一个列表并且想给一个方法一个属性,这样我就可以动态地选择列表属性的值。

这有可能吗?如果没有,我怎样才能最好地解决这个问题?

编辑: 我正在尝试提出随机问题,并且我想将这段代码放入一个方法中,这样我就不必复制粘贴我的代码了。

question = generateQuestion("Is he older than * years old?", attributes.age);
    System.out.println(question.get("question"));
    input = br.readLine();
    var attribute1 = question;
    var isOlder = input.contains("yes");
    list = list.stream().filter(person -> (person.age > Integer.parseInt(attribute1.get("attributeName"))) == isOlder).collect(Collectors.toList());

如您所见,我使用列表流,在该列表流中我有 person.age,但我希望“.age”部分是动态的。

【问题讨论】:

  • Java 是一种静态类型语言,您必须避免将其视为动态类型语言。可以动态访问字段,但这通常不是明智的选择。您应该考虑一种不同的设计(包括预先决定要与哪些属性进行比较)。

标签: java arrays hashmap


【解决方案1】:

这将返回一个属性列表,其中 Item 是您拥有的实例列表的类。

    list.stream()
        .map(Item::getAttribute())
        .collect(Collectors.toList())

顺便说一句,Groovy 支持扩展运算符以使其更容易:

list*.attribute

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多