建立对象,匿名内部类问题


public class NoNameDemo {
          public static void main(String[] args){
          //匿名内部类
          RichMan m =new RichMan();//这一步出错,不知道为什么
              m.findLover(new WRB(){         
                     public void white(){   
                          System.out.println("white........");
                     }
              }
              );
              
    }
    //白富美
    interface WRB{
         public void white();
    }

    //富翁
    class RichMan{
          public void findLover(WRB web){
              web.white();
          }
    }
}

定义匿名内部类的时候,为什么建立对象new的时候出错?

因为RichMan是普通类,一个普通的内部类对象需要和一个外部类对象绑定,即由一个外部类对象制造一个外部类对象。你可以改为RichMan m = new NoNameDemo().new RichMan();,或者将RichMan定义static类。

interface WRB 改成 class WRB呢,接口不能new吧

main方法是static修饰的,它是一个静态方法,但是RichMan类是依赖于NoNameDemo类实例的,你可以理解为静态方法不能访问实例对象。
改成static class RichMan就行了

匿名类创建的是抽象类或者接口