这是用记事本写的匿名内部类程序(java编程思想P197例子),用的java1.7编译器,无法编译public class Parcel{
public Contents contents(){
return new Contents(){
private int i=11;
public int value(){ return i;}
};
}
public static void main(String args[]){
Parcel p=new Parcel();
Contents c=p.contents();
}
}

解决方案 »

  1.   

    什么是匿名内部类?
    适合哪种只需要使用一次的类。例如:
    package com.snow.test;class P {
    void add(P p) {
    System.out.println("abc");
    }
    }
    public class C extends P{
    public static void main(String[] args) {
    C c = new C();
    c.add(new P(){

    });//所选部分即为匿名内部类。它是没有名字的
    }
    }
      

  2.   

    public class Parcel{
        public Contents contents(){
            return new Contents(){
                private int i=11;
                public int value(){    return i;}
            };
        }
        class Contents{
        
        }
        public static void main(String args[]){
            Parcel p=new Parcel();
            Contents c=p.contents();
        }
    }
    这样就可以啦 。return new Contents(){
                private int i=11;
                public int value(){    return i;}
            };
    这里相当于class Contents的子类吧。 父类引用指向子类对象吧。这个理解,不知道对不对
      

  3.   

    我程序里的Contents类和你的P类是一样的吧
      

  4.   

    我想我明白了,“一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类”。在外部类前面先定义Contents为抽象类能运行了。谢谢大家了
      

  5.   

    差不多是这样的,你的Contents 也可以换个一个接口,都是可以的,但是前提是要先定义。