Why does javac emit “error: the method in the class cannot be applied to the given types” when the instance method is used in a static context?

Consider the following (invalid) Java program:

public class Test { public static void main(String[] args) { int[] ints = {1, 2, 3, 4, 5}; print(ints); } public void print(int... ints) { for (int i : ints) { System.out.print(i); } } } 

I would expect an error like this:

 Cannot make a static reference to the non-static method print(int[]) from the type Test at Test.main(Test.java:5) 

but instead javac emits:

 Test.java:5: error: method print in class Test cannot be applied to given types; print(ints); ^ required: int[] found: int[] reason: varargs mismatch; int[] cannot be converted to int 1 error 

javac -version javac 1.8.0_11 java -version

 java version "1.8.0_11" Java(TM) SE Runtime Environment (build 1.8.0_11-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode) 

This happened on this issue . Is this a bug in javac? Or am I missing something dead here?

+7
java java-8 javac
source share
1 answer

This is a bug, and it is listed as JDK-8055514 . (You?)

+5
source share

All Articles