2 yanqiaoli yanqiaoli 于 2016.04.12 17:26 提问

java内部类的写法和使用 2C
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方法返回的值最终赋给了谁?

5个回答

CSDNXIAOD
CSDNXIAOD   2016.04.12 17:33

Java内部类的使用
Java 内部类的使用!
JAVA 内部类的使用
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

caozhy
caozhy   Ds   Rxr 2016.04.12 17:33
 返回的是一个实现了ContextualCallable<T>的匿名类的匿名对象,谁调用的传给了谁。
caozhy
caozhy   Ds   Rxr 2016.04.12 17:34

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

qq_31733073
qq_31733073   2016.04.12 17:57

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

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

qq_27556567
qq_27556567   2016.04.13 09:49

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

}

楼主能明白 就通了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!