我正在学习Java。要实例化一个类,我们使用new
关键字,但是我不明白这行代码的含义。为什么这里没有new
关键字?
AppDatabase db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class,
"database_transaction").build();
答案 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()
返回一个预先存在的对象。