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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java基础:熟悉3种内部类的写法,重点匿名内部类的使用
一、内部类定义  内部类(nested classes),面向对象程序设计中,可以在一个类的内部定义另一个类。嵌套类分为两种,即静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。内部类是JAVA语言的主要附加部分。内部类几乎可以处于一个类内部任何位置,可以与实例变量处于同一级,或处于方法之内,甚至是一个表达式的一部分。  内部类是JAVA语言...
java编程之线程,实现Runnable接口,匿名内部类的写法
package ThreadTest; //java编程之线程,实现Runnable接口,匿名内部类的写法 public class Test4 { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("当前线程的名字:"+
内部类示例
内部类的使用,不使用内部类的达到内部类效果的写法,
java comparator 排序 定义比较器内部类的方式排序 通用排序方式 非常灵活
class Products implements Comparable  { private String name; private int num; private Integer price; public String getName() { return name; } public void setName(String name) { this.name = nam
内部类详解(含java8新特性)
内部类的作用: 提供很好的封装,不允许同一个包中的其他类访问! 内部类成员能直接访问外部类的私有数据 匿名内部类适用于创建仅仅需要使用一次的类 内部类分类: 非静态内部类 静态内部类(类内部类) 成员内部类 匿名内部类 非静态内部类注意事项: 非静态内部类的成员可访问外部类的private成员,反过来不成立 —原因:外部类对象访问非静态内部类成员时,可能非静态内部类对象根本不存在!而非静态内部类对
单例模式的八种写法比较、枚举实现的好处、静态内部类实现单例原理
目录 简介 基本的实现思路 注意事项 单例模式的八种写法 1、饿汉式(静态常量)[可用] 2、饿汉式(静态代码块)[可用] 3、懒汉式(线程不安全)[不可用] 4、懒汉式(线程安全,同步方法)[不推荐用] 5、懒汉式(线程安全,同步代码块)[不可用] 6、双重检查[推荐用] 7、静态内部类[推荐用] 8、枚举[推荐用] 优点 缺点 适用场合
java 四种内部类 使用细节(含代码)
一: 内部类     定义在类体部,方法体部,甚至比方法体更小的代码块内部的类(if 语句里面等)     1.静态内部类(内部类中最简单的形式)         1.声明在类体部,方法体外,并且使用static修饰的内部类         2.访问特点可以类比静态变量和静态方法         3.脱离外部类的实例独立创建             在外部类的外部构建内部类的实例  
匿名内部类线程的写法
第一种 new Thread() { public void run() { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } }.start(); 第二种 Thread thread = new T
Java8 简洁的匿名内部类使用Demo
/** * Java8 简洁的匿名内部类使用Demo * Created by wangyingjie1 on 2017/2/23. */ public class ExecuteHelper { public static void execute(Execute execute) { execute.doExecute(); } private inte
JAVA8 匿名内部类和lambda表达式
一.匿名内部类   匿名内部类适合创建那种只需要一次使用的类,例如前面介绍命令模式时所需要的Command对象,匿名内部类的语法有点奇怪,创建匿名内部类时会立即创建一个该类的实例,这个类的定义立即消失,匿名内部类不能重复使用。 语法格式一般如下: new 实现接口() | 父类构造器 (实参列表){   //匿名内部类的类体部分 } 从上面可以看出,匿名内部类必