กรณีทดสอบเพื่อแสดงสิ่งนี้:
รหัส Java ที่มีการประกาศวิธีการ vararg (ซึ่งเป็นแบบคงที่):
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;
}
}
โค้ด Java นี้ (กรณีทดสอบ JUnit4) เรียกสิ่งที่กล่าวมา (เรากำลังใช้กรณีทดสอบที่จะไม่ทดสอบอะไรเลยเพียงเพื่อสร้างเอาต์พุตบางส่วน):
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"}));
}
}
การรันสิ่งนี้เป็นการทดสอบ JUnit ให้ผล:
sendNothing (): ได้รับ 'x' คืออาร์เรย์ขนาด 0
sendNullWithNoCast (): ได้รับ 'x' เป็นโมฆะ
sendNullWithCastToString (): ได้รับ 'x' คืออาร์เรย์ขนาด 1
sendNullWithCastToArray (): ได้รับ 'x' เป็นโมฆะ
sendOneValue (): ได้รับ 'x' คืออาร์เรย์ขนาด 1
sendThreeValues (): ได้รับ 'x' คืออาร์เรย์ขนาด 3
sendArray (): ได้รับ 'x' คืออาร์เรย์ขนาด 3
เพื่อให้สิ่งนี้น่าสนใจยิ่งขึ้นให้เรียกใช้receive()
ฟังก์ชันจาก Groovy 2.1.2 และดูว่าเกิดอะไรขึ้น ปรากฎว่าผลลัพธ์ไม่เหมือนกัน! นี่อาจเป็นข้อบกพร่องแม้ว่า
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"
}
}
การรันสิ่งนี้เป็นการทดสอบ JUnit จะให้ผลดังต่อไปนี้โดยความแตกต่างของ Java จะถูกเน้นเป็นตัวหนา
sendNothing (): ได้รับ 'x' คืออาร์เรย์ขนาด 0
sendNullWithNoCast (): ได้รับ 'x' เป็นโมฆะ
sendNullWithCastToString (): ได้รับ 'x' เป็นโมฆะ
sendNullWithCastToArray (): ได้รับ 'x' เป็นโมฆะ
sendOneValue (): ได้รับ 'x' คืออาร์เรย์ขนาด 1
sendThreeValues (): ได้รับ 'x' คืออาร์เรย์ขนาด 3
sendArray (): ได้รับ 'x' คืออาร์เรย์ขนาด 3
asList
วิธีการไว้ในตัวอย่างและวัตถุประสงค์