【问题标题】:Anonymous Class - Can we have two new objects for a same anonymous class?匿名类 - 我们可以为同一个匿名类创建两个新对象吗?
【发布时间】:2018-01-19 15:38:13
【问题描述】:

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

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();

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

【问题讨论】:

  • 您为什么要这样做?让它成为一个命名类。
  • 当然很简单。但是当我只需要这个类来做一个简短的操作并且需要两个对象时,它可能需要。
  • 我想知道在 java 或任何其他语言中是否有可能

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


【解决方案1】:

作为一般经验法则 - 如果您想要同一个匿名类的多个实例,那么它可能不应该是匿名的 - 只需将其设为普通的旧命名类并实例化任意数量的对象即可.

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

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

【讨论】:

  • 这绝对有效。我正在寻找这样的东西。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-09
  • 2022-11-27
  • 1970-01-01
  • 2012-05-15
相关资源
最近更新 更多