我用的是java1.7编译器,编译匿名内部类代码(java编程思想P197例子)时出错提示“找不到符号.....”,请高人指点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.   

    是不是Contents需要定义一下?要么个类,要么个接口。 
      

  2.   

    Contents是匿名内部类。这是完整的代码,是java编程思想上的例子。Dos里的错误信息是这样的:Parcel.java:2:错误:找不到符号
          public Contents contents(){
     符号: 类 Contents
     位置: 类 Parcel
    Parcel.java:3:错误:找不到符号
          return new Contents(){
     符号: 类 Contents
     位置: 类 Parcel
    Parcel.java:10:错误:找不到符号
          Contents c=p.contents();
     符号: 类 Contents
     位置: 类 Parcel
    3个错误
      

  3.   

    public class Parcel1 {
      class Contents {
        private int i = 11;
        public int value() { return i; }
      }
      class Destination {

    在Parcel1.java里定义过。
      

  4.   

    Contents类的定义在哪儿呢?没定义吧?至少你给出的代码里没有
      

  5.   

    起码的定义一个Contents类
    public class Parcel1 {
        public static interface Contents {
            public int value();
        }
      
        ...............
    }
      

  6.   

    定义了,new后面的就是匿名内部类的定义
    public Contents contents(){
     return new Contents(){
     private int i=11;
     public int value(){ return i;}
     };
      

  7.   

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