Java vararg对象。。。使用混合数据类型

Java vararg对象。。。使用混合数据类型,java,Java,如何从混合类型对象中提取值。。。Java中的vararg 比如说 对象。。。args被传递一个int、一个字符串和一个日期,如下所示 Hello(5, "Hello", Date.now); Hello(Object... args) {...} 我不建议这样做,但既然你问: public void Hello(Object... args) { ... } args.length是传递的参数数 args[0]是传递的第一个参数。通过args[args.length-1]依此类推。

如何从混合类型对象中提取值。。。Java中的vararg

比如说

对象。。。args被传递一个int、一个字符串和一个日期,如下所示

Hello(5, "Hello", Date.now);

Hello(Object... args) {...}

我不建议这样做,但既然你问:

public void Hello(Object... args) {
    ...
}
args.length
是传递的参数数

args[0]
是传递的第一个参数。通过
args[args.length-1]
依此类推。它们都将成为一个
对象
,直到您将其强制转换


在现实生活中这样做的问题是,未来的开发人员编写代码来调用您的方法几乎肯定会出错。您没有提供类型安全或任何机制来确保他们不会错误地调用该方法。进一步解释。

没有类型安全的方法来处理
对象…
。将数组中的每个元素强制转换为所需的类型。正确的解决方案是(可能)根本不使用
对象…
,而是使用POJO holder类型。您的
Hello
应该重写。此时您可能应该重新设计并重新思考。也许您可以找到一个公共接口,或者创建一个。任何比
Object
更具体的东西都会更好。好吧,在编辑您的答案之后,这可能是可以接受的。我想OP询问了如何检索特定元素的类,而不仅仅是值。或者两者兼而有之。也许他可以像以前一样再次使用它们,使用完整的类型信息(因此包括一个cast)。