方法原型中的varargs是否有多个对象类型?
|
我正在尝试编写Java函数的原型,该原型可以用任意数量的整数和字符串调用:
myMethod(1, 2, 3, \"Hello\", \"World\"); // Valid call
myMethod(4, \"foo\", \"bar\", \"foobar\"); // Valid call
理想情况下,我希望整数和字符串可以任何顺序给出(并可能混合使用):
myMethod(1, \"Hello\", 2, \"World\", 3); // Valid call
我曾考虑使用varargs,但原型中只能有一个。我拥有的另一个想法是使用以下原型:
public void myMethod(Object ... objs) { [...] }
...但我认为,如果使用非预期类型的其他东西调用它,应该会出现编译错误。当然,可以执行运行时检查(instanceof
),但这不是一个非常好的解决方案,对吗?
你会怎么做?
没有找到相关结果
已邀请:
6 个回复
悸翠疮武昏
草票
然后创建您的Thing类:
我将让您想象一下如何编写StringThing。显然,使用比\“ Thing \”更好的名称,但是我帮不了你。 然后,您创建两个静态方法:
然后将每个对象包装在对
的调用中:
乱?对。不幸的是,Java无法像其他语言一样将这些内容隐藏起来。 Scala的隐式defs将在这里为您提供帮助,但这还带来了其他问题。就个人而言,我会进行
检查,但这将确保您的代码在编译时是安全的。
冉案
哭木算
的varargs参数。这是由于Java中的限制,即方法签名中只能有一个vararg,并且它必须是最后一个参数。 在不知道您打算12英镑做什么的细节的情况下,很难说出替代性的优雅解决方案可能是什么。
掸牛浓疗
在您的程序中:
(打破了许多编码风格规则)
琳娘
类型变量“ 16”允许类型相同的类型是“ 17”和“ 18”的子类型(例如,实现多个接口的类型)。