java内部类的写法和使用

public <T> T inject( final Class<T> implementation ) {
    return callInContext(new ContextualCallable<T>() {
        public T call( InternalContext context ) {
            return inject(implementation, context);
        }
    });
}

请大侠帮忙解释一下上面代码中的new ContextualCallable<T>()后面跟一个方法是什么写法,这个call方法是在什么时间段被调用的,call方法返回的值最终赋给了谁?
 返回的是一个实现了ContextualCallable<T>的匿名类的匿名对象,谁调用的传给了谁。

inject表示这个是一个注入的调用,一般来说是写给框架,框架来回调的。

public T inject( final Class implementation ) {
return mcallInContext;
}
mcallInContext = callInContext(mContextualCallable);
mContextualCallable = new ContextualCallable() {....};
{....}里面的call方法应该是给了mContextualCallable,ps:暂不确定.

这些复杂的代码,可以一步步的摘出来,会清晰一些.

public volatile static int count = 0;

public static void inc() {

//这里延迟1毫秒,使得结果明显

try {

Thread.sleep(1);

} catch (InterruptedException e) {

}

count++;

}

public static void main(String[] args) {

//同时启动1000个线程,去进行i++计算,看看实际结果

for (int i = 0; i < 1000; i++) {

new Thread(new Runnable() {

@Override

public void run() {

Counter.inc();

}

}).start();

}

//这里每次运行的值都有可能不同,可能不为1000

System.out.println("运行结果:Counter.count=" + Counter.count);

}

楼主能明白 就通了