在此实例化类的示例中,为什么没有“ new”关键字?

时间:2019-07-28 10:04:41

标签: java class instantiation

我正在学习Java。要实例化一个类,我们使用new关键字,但是我不明白这行代码的含义。为什么这里没有new关键字?

AppDatabase db = Room.databaseBuilder(getApplicationContext(),
                                      AppDatabase.class,
                                      "database_transaction").build();

1 个答案:

答案 0 :(得分:1)

您对此询问:

AppDatabase db = Room.databaseBuilder(getApplicationContext(),
                                      ppDatabase.class,
                                      "database_transaction").build();

这是对方法(在databaseBuilder类上的静态方法Room)的调用,然后是对第一次调用返回的对象的build()方法的第二次调用。然后第二个调用返回一个AppDatabase对象。

在其中一种方法中的某个地方,我期望 new被用于显式创建新对象 1

这看起来像一个称为Factory Method模式的常规模式的示例,其中,创建对象的逻辑封装在静态方法或实例方法中。更具体地说,这看起来像Builder模式。

值得阅读这两个链接以了解这些模式的优缺点。它们也可以与Fluent Interface API设计模式结合使用,以减少参数和/或方法重载的数量。


1-我可能是错的。可以用其他方式创建对象。例如通过装箱,反序列化对象序列化流或使用Unsafe或本机代码方法。这些方法的名称也可能会引起误解,并且build()返回一个预先存在的对象。