10.5.  Use Arrays for Java-varargs

Error Message

# died: Wrong number of arguments at C:/Perl64/site/lib/Inline/Java/Object.pm line 107.

Explanation

A Java method may have a variable number of parameters. Perl must pass an array to such methods.

Code with Error

lives_ok {
  my $pdfUnderTest = "$resources_dir/doc-under-test.pdf";
  my $pages134 = PagesToUse->getPages(1, 3, 4);      #  syntax error
  AssertThat->document($pdfUnderTest)
            ->restrictedTo($pages134)
            ->hasText()
  ;
} "typical error, no array for Java varargs";

Good Code

lives_ok {
  my $pdfUnderTest = "$resources_dir/doc-under-test.pdf";
  my $pages134 = PagesToUse->getPages([1, 3, 4]);    # ok
  AssertThat->document($pdfUnderTest)
            ->restrictedTo($pages134)
            ->hasText()
  ;
} "no error, array used for Java varargs";