Такое предупреждение возникает при попытке передать массив в качестве параметров в метод с переменными числом параметров. Например:
|
String[] parameters = new String[] {"Olya", "Petya"}; String str1 = String.format("Vasya, %s, and %s go to the zoo.", parameters); // warning |
Предупреждение возникает, из-за того, что возникает неоднозначность, передаётся ли последний аргумент как один объект или используется вариант с переменным числом параметров, где каждый элемент массива представляет собой отдельный параметр. В самом тексте warning-а уже содержится информация о том, как его разрешить:
|
warning: non-varargs call of varargs method with inexact argument type for last parameter; String str1 = String.format("Vasya, %s, and %s go to the zoo.", (String[]) parameters); // warning ^ cast to Object for a varargs call cast to Object[] for a non-varargs call and to suppress this warning |
Для разрешения этой неоднозначности используйте приведение к
Object[], чтобы явно указать что используется вариант с переменным числом параметров, либо к
Object, если весь массив передаётся именно как один параметр-массив:
|
String[] parameters = new String[] {"Olya", "Petya"}; String str1 = String.format("Vasya, %s, and %s go to the zoo.", (Object[]) parameters); |