【问题标题】:Passing arguments to java function in bulk将参数批量传递给java函数
【发布时间】:2014-12-16 20:08:39
【问题描述】:

如果您想将选项列表传递给函数,您会使用什么?

例如,如果您有一个到服务器的接口:

public interface Server {
    public void authUser(String username, String password, <xyz> options);
}

使用什么结构来传递一组选项?类似 HashMap 的东西?

我之所以说它来自隧道视野,是因为我觉得这违反了 Java 标准。 Java有方法重载。因此,如果我因为提出这个问题而被激怒,我理解。但总的来说,也许在不同的情况下,您是否会在某个集合中传递批量数据,如果是,是哪一个?

【问题讨论】:

  • 是的,您可以在任何类型的集合对象中传递批量数据,这不是问题...您的问题到底是什么?数据结构将取决于您传递的数据...
  • 另外方法重载和这个问题有什么关系?
  • Hashmap、ArrayList、LinkedList、Array、Properties Object 这些是您可以用来传递数据的一些数据结构...
  • 逐案处理,但有时会使用批量数据传递来允许灵活的可选参数。因此,我提到语言重载方法的能力有时会提供更好的选择:)

标签: java function arguments


【解决方案1】:

Option1:如果您选择 List 或 Set 等任何集合,这些集合是特定于对象的。我的意思是,

让我们假设,Set sets = new HashSet(); 如果我想发送5个不同类的没有关系的对象,那么在迭代时很难识别哪个对象属于哪个类。所以,我不会推荐 Collections。

Option2 :如果选择Map,在动态获取对象时可能会出现上述同样的问题。所以,这个选项也不推荐。

选项3

为什么你不能创建你自己的 DTO,然后在那个 DTO 中放置你需要的数据结构并传递它。

如果你想通过 5 个不同的对象,你可以通过。如果都是相同类型,那么您可以根据您的场景使用集合或数组或变量参数。

【讨论】:

    【解决方案2】:

    我认为任何可序列化的东西都是正确的。如果您可以序列化对象,那么您可以传递(存储,传输......)它,批量传递它的属性。选择什么格式的序列化数据,是另一个问题。

    【讨论】:

      【解决方案3】:

      这取决于您要传递的数据。

      1. 如果您要传递键值对,则可以使用 map(hashmap)。
      2. 如果只是不同对象的列表,可以使用List(ArrayList)
      3. 其他选项是使用 getter 和 setter 方法创建 DTO(数据传输对象)。
      4. 您可能想看看 JAVA5 中引入的 VARARGS 功能。

      【讨论】:

        【解决方案4】:

        我建议使用 Map [HashMap],因为您可以通过它们的键访问参数值。

        【讨论】:

          猜你喜欢
          • 2015-01-05
          • 1970-01-01
          • 2018-02-11
          • 1970-01-01
          • 2013-01-27
          • 2020-05-13
          • 1970-01-01
          • 2016-12-31
          • 1970-01-01
          相关资源
          最近更新 更多