我可以看到在Java中有一种方法可以接受任意数量的指定类型的参数: http://www.java-tips.org/java-se-tips/java.lang/how-to-pass-unspecified-number-of-arguments-to-a-m.html
但有没有办法制作一个接受任意类型任意数量参数的方法?
答案 0 :(得分:9)
所有Java对象都扩展了Object类。所以你可以让你的函数接受一个Object数组:
public void func(Object[] args) {
}
或者如果你想要什么都不能通过:
public void func(Object... args) {
}
答案 1 :(得分:5)
public void omnivore(Object... args) {
// what now?
}
在Java中,任何引用类型(对象和数组)的变量(包括某些泛型类型的变量,甚至通配符)都可以传递给Object类型的参数。任何基本类型的变量都可以自动装箱到其相应的包装类型,这是一种引用类型,因此可以作为Object传递。因此,Object...
将接受任意数量的任何内容。
答案 2 :(得分:3)
使用以下语法:
void myMethod(Object... args) {
// Here, args is an array of java.lang.Object:
// you can take its length, get its elements with [i] operator,
// and so on.
}
答案 3 :(得分:1)
您最接近的是someMethod(Object ... args)
。
严格来说,这不接受所有参数类型。具体来说,它不接受原始类型:这些需要装入相应的包装类型。通常这没有区别。但是如果你需要在被调用的方法中区分原始类型和包装类型,它就会这样做。