public class Parcel7
{
public Contents contents()//Contents cannot be resolved to a type
{
return new Contents()//Contents cannot be resolved to a type
{
private int i = 11;
public int value()
{
return i;
}
};
}
public static void main(String[] args)
{
Parcel7 o = new Parcel7();
//Contents c = o.contents();
}
{
public Contents contents()//Contents cannot be resolved to a type
{
return new Contents()//Contents cannot be resolved to a type
{
private int i = 11;
public int value()
{
return i;
}
};
}
public static void main(String[] args)
{
Parcel7 o = new Parcel7();
//Contents c = o.contents();
}
}
interface Contents{
public int value();
}
contents()方法将返回值的生成与表示这个返回值的类的定义结合在一起!另外,这个类是匿名的,它没有名字。更糟的是,看起来似乎是你要创建一个Contents对象。但是然后(在到达语句技术的分号之前)你却说:“等一等,我想在这里插入一个类的定义."
每个内部类都能独立的继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)的实现,对于内部类都是没有影响的。
内部类可以实现多重继承
eg:
class D {}
abstract class E {}
class Z extends D{
E makeE(){return new E(){};}
}
public clss MultiImplementation{
static void takesD(D d){}
static void takesE(E e){}
public static void mian(String[] args){
Z z = new Z();
takesD(z);
takesE(z.makeE);
}
}