如何检查参数是否为varArgs

时间:2016-02-15 00:45:03

标签: java android logging

我将自己的安卓程序包装在我自己的

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

但是如果我传入的参数不是varArgs,我会收到警告。但更糟糕的是,这个价值印得很奇怪。就像我致电myLog.d(TAG,"timestamp %s",timestamp)一样,我得到timestamp: [J@3d4e5d16

Gradle编译警告:

  

警告:非varargs调用带有不精确参数类型的varargs方法   为最后一个参数;           Log.d(tag,String.format(msg,varArgs));

2 个答案:

答案 0 :(得分:1)

问题不在于您没有发送var args,而是发送long[],它是可变数量的Object参数的第一个元素。

这可以解决您的问题:

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

答案 1 :(得分:0)

无需做出任何决定。 varargs。它是作为指定类型的数组接收的。你必须相应地记录它。目前,您将其记录为long[].toString().