返回类型变量



我有一个方法:

void foo(int x, Grok... groks);

没有办法定义一个返回变量类型的方法,对吗?理想情况下,我需要一个额外的util方法:

foo(25, new Grok(), new Grok(), generateMoreGroks());
public Grok... generateMoreGroks() {
    return new Grok[] {
        new Grok(), new Grok(), new Grok() };
}

对吧?

----更多信息--------------

上面的问题是,我们不能将分配的几个Grok实例与Grok数组混合在一起:
 "new Grok(), new Grok(), generateMoreGroks());"

,我不认为这是合法的,除非你可以定义一个方法来返回一个类型的变量(我猜)。

谢谢

你可以,

Grok[] generateMoreGroks() {

如果一个方法接受一个varargs形参,它与接受一个数组形参是一样的。

现在您需要重载foo以允许它接受一些Grok实例,其余的作为变量,

foo(int x, Grok... rest)
foo(int x, Grok g1, Grok... rest)
foo(int x, Grok g1, Grok g2, Grok... rest)
foo(int x, Grok g1, Grok g2, Grok g3, Grok... rest)

其中foo方法像

foo(int x, Grok g1, Grok... rest) {
     Grok[] groks = new Grok[rest.length + 1];
     groks[0] = g1;
     System.arrayCopy(rest, 0, groks, 1, rest.length);
     foo(x, groks);
}

没有…但是改变函数签名就可以了。

public Grok[] generateMoreGroks() {
    return new Grok[] {
        new Grok(), new Grok(), new Grok() };
}

最新更新