匿名类 - 我们可以为同一个匿名类创建两个新对象吗?

时间:2018-01-19 15:38:14

标签: java class object reference anonymous-inner-class

当我们创建一个匿名类时,比如

Employee emp = new Employee() {
  void get() {
    //Some body
  }
  void put() {    
    //Some body
  }
};
emp.set();
emp.get();

对象引用emp指的是上述匿名内部类的对象。 我们还可以创建另一个匿名类,其对象可以由相同的对象引用引用,如

emp = new Employee() {
      void x() {
        //Some body
      }
      void y() {    
        //Some body
      }
    };
    emp.x();
    emp.y();

但有没有办法为同一个匿名类创建另一个对象?如果需要,是否可以为现有的匿名类创建新对象?

1 个答案:

答案 0 :(得分:3)

作为一般的经验法则 - 如果你想要同一个匿名类的多个实例,很可能它不应该是匿名的 - 只需使它成为一个普通的旧命名类,并根据需要实例化它的多个对象

但是,您可以使用的一个肮脏技巧是访问实例的getClass()并使用反射来实例化新实例:

Employee emp2 = emp.getClass().newInstance();