如何创建一个接受Java中任何类型的任意数量的参数的方法?

时间:2012-02-19 23:20:06

标签: java methods argument-passing

我可以看到在Java中有一种方法可以接受任意数量的指定类型的参数: http://www.java-tips.org/java-se-tips/java.lang/how-to-pass-unspecified-number-of-arguments-to-a-m.html

但有没有办法制作一个接受任意类型任意数量参数的方法?

4 个答案:

答案 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)

严格来说,这不接受所有参数类型。具体来说,它不接受原始类型:这些需要装入相应的包装类型。通常这没有区别。但是如果你需要在被调用的方法中区分原始类型和包装类型,它就会这样做。