2016-02-15 4 views
0

переменные аргументы я обернуть андроид класс войти в мой собственныйКак проверить, если аргумент

public static void d(String tag, String msg, long... varArgs) { 
    Log.d(tag, String.format(msg, varArgs)); 
} 

Но если аргумент я прохожу в это не я получаю переменные аргументы предупреждение. Но хуже, значение печатается странно. Как, если я называю myLog.d(TAG,"timestamp %s",timestamp), то я получаю timestamp: [[email protected]

Gradle компилировать предупреждение:

предупреждения: не-вызов переменных аргументов метода с переменным числом аргументов неточным типом аргумента для последнего параметра; Log.d (тег, String.format (msg, varArgs));

+0

Прежде всего, вы используете '% s' напечатать целое значение. –

+0

Прежде всего, дайте конкретный пример, который генерирует предупреждение и ** точное ** предупреждающее сообщение. –

ответ

1

Проблема не что вы не посылаете Var арг, но вы отправляете long[], который является первым элементом с переменным числом аргументов Object.

Это исправляет проблему:

Log.d(tag, String.format(msg, (Object[]) varArgs)) 
+0

Я вижу проблему. Вместо 'long ... varArgs' я должен был иметь Object ... varArgs'. Теперь он работает с моим исправлением. –

+0

Это тоже сработало, казалось, вы почему-то хотели, чтобы 'd' забрал' long ...', хотя я не мог понять, что. –

0

Нет решения необходимо. Это является varargs. Он получен как массив указанного типа. Вы должны зарегистрировать его соответствующим образом. В настоящее время вы его регистрации в качестве long[].toString().

Смежные вопросы