Java:混合(数据类型)变量参数

时间:2013-08-02 18:46:51

标签: java xml arrays jaxb variadic-functions

所以自从我的第一个问题以来,我已经走了很长一段路,感觉我知道自己在做什么。

无论如何,我在这里使用JAXB创建XML元素/值的方法。设置如下:

addXML(String...xml);

用于

javabean.addXML("tagname","tagvalue", "tagname2", "tagvalue2", etc..);

现在,通常很多这些“标签值”都是数字的。此外,它们可能被分配给varialbes,在这种情况下,只需键入变量名称代替“tagvalue”就可以了 - 但截至目前,首先需要转换为String。

所以,我的问题是,是否可以创建一个采用VARIABLE量的字符串/双对的方法?

value1 = 1.0;
value2 = 3.5403;
javabean.addXML("tagname", 1.0, "tagname2", value2,  etc...);

我是否需要定义某种自定义的arraylist,它在字符串和双精度之间交替出现,并将这些列表的可变数量作为参数?

谢谢,

3 个答案:

答案 0 :(得分:1)

创建您自己的Tag类,其中包含标记名称和标记值的属性。然后使用Tag作为varargs参数的类型:

addXML(Tag... tags);

您可以这样调用您的方法:

javabean.addXML(new Tag("tagname", 1.0), new Tag("tagname2", value2));

答案 1 :(得分:0)

两个选项:

  1. 将您的方法声明为addXml(Object ...),然后在运行时验证输入是否正确交替字符串并在方法本身中加倍。这允许您编写一个看起来与您的示例完全相同的函数,但不会让Java静态检测方法调用中的任何错误。

  2. 定义一个将字符串和数字配对的类,然后使用它。这要求调用者多做一些打字,但允许类型检查器确保正确使用该方法。

答案 2 :(得分:0)

最好不必处理具有许多参数的调用。最好允许用户多次调用该方法并在内部添加标记/值对。

所以方法调用就像:

javabean.addDoubleElement(String tag, double value);

请注意addXML不是很具描述性。小心过于笼统的名字。另外请确保您没有不必要混合编码和类型。 addXML对于执行编码的类是可以的,但对于描述数据类型的类则不太好。