比如这样:
public class MyClass{
   abstract class MyAbstractClass{
       abstract void method();
   }
}
我想创建一个从MyAbstractClass这个抽象内部类继承的匿名对象,该如何创建呢?

解决方案 »

  1.   

    抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。你只能实例化MyClass
      

  2.   

    没理解楼主的意思?
    是这个吗:public class MyClass {
    abstract class MyAbstractClass {
    abstract void method();
    }

    class MyEntityClass extends MyAbstractClass {
    void method(){
    System.out.println(1);
    }
    }
    public void ss() {
    MyEntityClass m  = new MyEntityClass();
    m.method();
    }
    }
      

  3.   

    只要知道内部类的作用就知道怎么用了
    1.内部类可以很好的实现隐藏,也就是封装性。一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
    2.内部类拥有外围类的所有元素的访问权限
    3.可是实现多重继承
    4.可以避免修改接口而实现同一个类中两种同名方法的调用
      

  4.   


    public class MyClass{
     abstract class MyAbstractClass{
      abstract void method();
      }
    }public class Test{
    public static void main(String[] args){
    Object o = getInstance();
    o.toString();
    } public static Object getInstance(){
    MyClass mc = new MyClass();
    Object mac = mc.new MyAbstractClass(){
    void method(){
    System.out.println("This is MyClass.MyAbstractClass.method()");
    } public String toString(){
    method();
    return null;
    }
    };
    return mac;
    }}这个是你要的结果
      

  5.   

    如果你将内部的类定义为静态的会相对比较容易处理些
    静态的如下:
    public class Test{
    public static void main(String[] args){
    MyClass.MyAbstractClass o = getInstance();
    o.method();
    //o.toString();
    } public static MyClass.MyAbstractClass getInstance(){
    MyClass mc = new MyClass();
    MyClass.MyAbstractClass mac = new MyClass.MyAbstractClass(){
    void method(){
    System.out.println("This is MyClass.MyAbstractClass.method()");
    }
    };
    return mac;
    }}
      

  6.   

    public class Test1 { abstract class inner{

    public abstract void show();
    }

    class A extends inner{

    public  void show(){

    System.out.println("in show");
    }
    }
    public static void main(String[] args) { Test1 test = new Test1();

    test.new A().show();
    }}