Test.function().method();//给定这个 推出匿名内部类
看上面这句话,可以先将它肢解下 Test.function();这句通过类名直接访问内部的方法说明function是静态的且是public的,所以类Test应该是下面格式的
class Test{
public static ?(返回值目前不确定) function(){
}
}
在后面加上.method();说明Test.function();返回的是一个对象这个对象中有一个public的method()方法,所以这里返回的是一个实现了Inner接口的类的实例对象(我们知道匿名内部类时这个类必须继承一个类或实现一个接口,那我们这边能不能继承一个累呢?不行因为这边没有声明一个包含method的方法,换句话说只能继承Object,但是Object中没有method方法,这就导致外部无法调用该类的method方法,所以只能实现Inner接口),所以代码如下
class Test{
public static Inner/*这是就确定了类型*/function(){
return new Inner(){
public void method(){system.out.println("in method")/*代码*/}
};
}
}
|