簡體   English   中英

(使用Eclipse的Java)currentTimeMillis()

[英](Java using eclipse) currentTimeMillis()

這只是我現在要使用currentTimeMillis()打印要加載圖像的時間的一部分,這是為什么它不起作用的原因?

package method;

import java.io.PrintWriter;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Date;

 public class TracingInvocationHandler implements InvocationHandler {

private Object target;
private PrintWriter out;

public TracingInvocationHandler(Object target, PrintWriter out) {
    this.target = target;
    this.out = out;

}

@Override
public Object invoke(Object proxy, Method method, Object[] args)
        throws Throwable {
     long startTime = System.currentTimeMillis();
        Object result = null;
        out.println("Image " + method.getName() + " (...) entered.");
        result = method.invoke(target, args);
        out.println("Image " + method.getName() + " (...) returned.");
     long endTime = System.currentTimeMillis();
       System.out.printf(" [%s] %s Image %s took %d ms:",new Date().toString(), method.getName(),args[0], (endTime - startTime) + "ms");
    return result;

}

   public static Object createProxy(Object target, PrintWriter out) {
    Class<?> targetClass = target.getClass();
    ClassLoader currentClassLoader = targetClass.getClassLoader();
    Class<?>[] interfaces = targetClass.getInterfaces();
    InvocationHandler handler = new TracingInvocationHandler(target, out);
    return Proxy.newProxyInstance(currentClassLoader, interfaces, handler);
}

(endTime - startTime) + "ms"刪除+ "ms" (endTime - startTime) + "ms" 模式中的相應格式%d需要數字對象。 (endTime - startTime) + "ms"產生一個String

您可能正在接收例外。 下次您提出問題時,請附上它。 這次你很幸運。

這是因為您要投射一個很長的原始浮點數,所以我建議您在投射時使用一個變量:例如:

long totalTime = endTime - startTime;
String strTotalTime = String.valueOf(totalTime);
System.out.printf(" [%s] %s Image %s took %s ms:",
    new Date().toString(), method.getName(), args[0], strTotalTime);

它被調用,但我看不到您將其傳遞給sysout,這就是為什么它不可見的原因。 那就是你在做的:

  long endTime = System.currentTimeMillis();
       System.out.printf(" [%s] %s Image %s took %d ms:",new Date().toString(),

代替:

  long endTime = System.currentTimeMillis();
       System.out.printf(" [%s] %s Image %s took %d ms:",new Date(endTime).toString(),

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM