Kasus Uji untuk menggambarkan ini:
Kode Java dengan deklarasi metode pengambilan vararg (yang kebetulan statis):
public class JavaReceiver {
public static String receive(String... x) {
String res = ((x == null) ? "null" : ("an array of size " + x.length));
return "received 'x' is " + res;
}
}
Kode Java ini (kasus uji JUnit4) memanggil yang di atas (kami menggunakan kasus uji untuk tidak menguji apa pun, hanya untuk menghasilkan beberapa keluaran):
import org.junit.Test;
public class JavaSender {
@Test
public void sendNothing() {
System.out.println("sendNothing(): " + JavaReceiver.receive());
}
@Test
public void sendNullWithNoCast() {
System.out.println("sendNullWithNoCast(): " + JavaReceiver.receive(null));
}
@Test
public void sendNullWithCastToString() {
System.out.println("sendNullWithCastToString(): " + JavaReceiver.receive((String)null));
}
@Test
public void sendNullWithCastToArray() {
System.out.println("sendNullWithCastToArray(): " + JavaReceiver.receive((String[])null));
}
@Test
public void sendOneValue() {
System.out.println("sendOneValue(): " + JavaReceiver.receive("a"));
}
@Test
public void sendThreeValues() {
System.out.println("sendThreeValues(): " + JavaReceiver.receive("a", "b", "c"));
}
@Test
public void sendArray() {
System.out.println("sendArray(): " + JavaReceiver.receive(new String[]{"a", "b", "c"}));
}
}
Menjalankan ini sebagai pengujian JUnit menghasilkan:
sendNothing (): accept 'x' adalah array berukuran 0
sendNullWithNoCast (): diterima 'x' adalah null
sendNullWithCastToString (): diterima 'x' adalah larik berukuran 1
sendNullWithCastToArray (): diterima 'x' adalah null
sendOneValue (): diterima 'x' adalah larik berukuran 1
sendThreeValues (): diterima 'x' adalah larik berukuran 3
sendArray (): accept 'x' adalah larik berukuran 3
Untuk membuatnya lebih menarik, panggil receive()
fungsi dari Groovy 2.1.2 dan lihat apa yang terjadi. Ternyata hasilnya tidak sama! Ini mungkin bug.
import org.junit.Test
class GroovySender {
@Test
void sendNothing() {
System.out << "sendNothing(): " << JavaReceiver.receive() << "\n"
}
@Test
void sendNullWithNoCast() {
System.out << "sendNullWithNoCast(): " << JavaReceiver.receive(null) << "\n"
}
@Test
void sendNullWithCastToString() {
System.out << "sendNullWithCastToString(): " << JavaReceiver.receive((String)null) << "\n"
}
@Test
void sendNullWithCastToArray() {
System.out << "sendNullWithCastToArray(): " << JavaReceiver.receive((String[])null) << "\n"
}
@Test
void sendOneValue() {
System.out << "sendOneValue(): " + JavaReceiver.receive("a") << "\n"
}
@Test
void sendThreeValues() {
System.out << "sendThreeValues(): " + JavaReceiver.receive("a", "b", "c") << "\n"
}
@Test
void sendArray() {
System.out << "sendArray(): " + JavaReceiver.receive( ["a", "b", "c"] as String[] ) << "\n"
}
}
Menjalankan ini sebagai pengujian JUnit menghasilkan yang berikut, dengan perbedaan pada Java yang disorot dalam huruf tebal.
sendNothing (): accept 'x' adalah array berukuran 0
sendNullWithNoCast (): diterima 'x' adalah null
sendNullWithCastToString (): diterima 'x' adalah null
sendNullWithCastToArray (): diterima 'x' adalah null
sendOneValue (): diterima 'x' adalah larik berukuran 1
sendThreeValues (): diterima 'x' adalah larik berukuran 3
sendArray (): accept 'x' adalah larik berukuran 3
asList
metode dalam sampel, dan tujuannya.