【问题标题】:Creating object with new Object{} [duplicate]使用 new Object{} 创建对象 [重复]
【发布时间】:2019-03-05 08:03:37
【问题描述】:

您能否解释一下这种结构的实际工作原理以及它的含义?

var newObj = new Object () {
  public String s = "test";
  public int i = 1;
};

newObj 的类是什么以及它是如何创建的?

【问题讨论】:

  • newObj 是扩展 Object 类的匿名类的实例。
  • 这不是 Java。可能是 JavaScript。
  • @user207421 It compiles fine.

标签: java anonymous-class


【解决方案1】:

newObj 的类是一个匿名内部类。在这里,您在花括号 {} 内定义了这个匿名内部类。

匿名内部类在创建具有某些“附加”的对象实例时很有用,例如重载类或接口的方法,而不必实际子类化一个类。

此外,newObj 引用不是指Object 的实例,而是指Object 的匿名子类的实例。

【讨论】:

  • 这是唯一真正有趣的部分:因为var,编译器现在可以“跟踪”您正在扩展 Object,因此当您将新方法放入该类时,您可以稍后调用它。
猜你喜欢
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 2011-07-19
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
相关资源
最近更新 更多