2016-07-05 45 views
1

如果我想将特定数量的引用传递给某个方法,我该怎么做?可以将具有特定数量引用的数组作为参数传递给函数吗?

例如

public void getArr(CP[] c,String t) 
{ 
    for(int i=0;i<c.length;i++) 
    { 
     cp[nr]=c[nr]; 
     nr++; 
    } 
} 

我想例如我的方法采取3个引用到CP对象的完全数组;我怎样才能指定在方法中?

+0

数组长度不属于该类型的一部分,因此无法通过方法签名强制执行。你可以有3个参数。但我想你想要的东西不那么笨重。 –

+0

是的:)。它可以用集合来完成吗? – Daniel

+0

只有您拥有专门设计用于容纳3个元素的自定义集合。同样,大小不是集合类型的一部分。 –

回答

0

在java中不可能,因为数组的长度不是其类型的一部分。您可以在运行时用支票变通办法:

public void getArr(CP[] c,String t) 
{ 
    if (c.length != 3) { 
     throw new IllegalArgumentException("Required exactly 3 array elements"); 
    } 
    for(int i=0;i<c.length;i++) 
    { 
     cp[nr]=c[nr]; 
     nr++; 
    } 
} 

或者与assert

public void getArr(CP[] c,String t) 
{ 
    assert c.length == 3 : "Required exactly 3 array elements"; 
    for(int i=0;i<c.length;i++) 
    { 
     cp[nr]=c[nr]; 
     nr++; 
    } 
} 
0

这是不可能在Java中。

CP[]类型对于c;数组的特定大小不构成类型的一部分。所以你不能导致编译时失败。

如果您不想依赖运行时检查,为什么不通过CP c1, CP c2, CP c3而是在呼叫站点分解阵列?

相关问题