2013-08-30 26 views
0

這僅僅是一塊什麼,我在我想要使用的currentTimeMillis()打印時間的圖像加載任何原因,它不工作做什麼工作的呢?(Java中使用的Eclipse)的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); 
} 
+6

請解釋「不工作」 –

+0

@thejh向右滾動。 –

+0

沒有打印出的時間我的意思是 – user2729154

回答

-1

它被調用,但我沒有看到你把它傳遞給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(), 
4

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

你可能正在接受一個例外。下次您提出問題時,請將其包含在內。這次你很幸運。

+0

對不起,我是新我不能老是上傳全班出於某種原因 – user2729154

+1

@ user2729154但你應該有複製和粘貼的錯誤信息,而不是隻說:「這是行不通的。」錯誤消息是有原因的,它們包含大量關於該問題的信息,以幫助您解決問題。 – Jesper

0

這是因爲你鑄造長原始浮動,我建議你使用一個變量,你投:例如:

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);