问题描述
- 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方法返回的值最终赋给了谁?
解决方案
Java内部类的使用
Java 内部类的使用!
JAVA 内部类的使用
解决方案二:
返回的是一个实现了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);
}
楼主能明白 就通了