当前位置: 首页 > 知识库问答 >
问题:

构造函数Firebase Options. Builder()不建议使用

文彭祖
2023-03-14

Firebase使您能够将Firebase Admin SDK添加到服务器:

FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
.build();

FirebaseApp.initializeApp(options);

之前,我使用了以下代码,但是,现在我在Eclipse中收到一条消息,“构造函数FirebaseOptions.Builder()已被弃用”。

InputStream serviceAccount = context.getResourceAsStream("/WEB-INF/[my-web-token].json");
    try {
        options = new FirebaseOptions.Builder() // <--DEPRECATED
            .setCredentials(GoogleCredentials.fromStream(serviceAccount))
            //.setDatabaseUrl(FIREBASE_DATABASE_URL)
            .build();
        } catch(Exception e) {
            e.printStackTrace();
        }

        firebaseApp = FirebaseApp.initializeApp(options);

果然,Firebase建议:

Builder()此构造函数已被弃用。改用builder()。

构造函数现在如下所示:

公共静态Firebase选项。Builder Builder()

这是如何实现的?如果我换一个

FirebaseOptions options = FirebaseOptions.Builder()
...

有了新的建筑商。。。

FirebaseOptions options = FirebaseOptions.builder()
...

我得到一个错误:

Firebase选项。生成器无法解析为类型

并且文件不会编译

有人能告诉我如何使用新的构造器,或者告诉我更新的Firebase文档吗?我找不到。

共有2个答案

宋子辰
2023-03-14

尝试:

FirebaseOptions.Builder options = FirebaseOptions.builder()
戴博
2023-03-14

这是Firebase Admin SDK for Java 7.0.0版的突破性变化。发行说明说:

此版本包含几个突破性的应用编程接口更改。有关更多详细信息,请参阅Java管理SDK v7迁移指南。

如果您浏览到该指南,不幸的是,它没有解决这一特定情况(尽管FCM notification builder也记录了类似的突破性更改)。生成器构造函数已更改为方法,而不是对象构造函数。(请随时使用该页面上的“发送反馈”链接表达您对该缺失信息的意见。)

但是,您可以看到FirebaseOptions的API文档。builder()是开始构建FirebaseOptions的新方法。您可以看到,旧的Builder构造函数已被弃用。

因此,您应该确保在依赖项中使用Admin SDK的7. x. x版本,这将允许您使用新方法调用创建一个新的Firebase Options. Builder对象:

FirebaseOptions.Builder builder = FirebaseOptions.builder()

或者,如您最初尝试的那样使用内联:

FirebaseOptions options = FirebaseOptions.builder()
    .setCredentials(GoogleCredentials.getApplicationDefault())
    .setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
    .build();

FirebaseApp.initializeApp(options);
 类似资料:
  • 问题内容: 在工作时,我得到了警告 而且我找不到在线替代构造函数/解决方案。我该如何解决这个问题? 更新 对于其他原始包装器类型的构造函数,我将收到类似的警告;例如 是否对这些类适用相同的解决方案? 问题答案: 您可以使用 从构造函数的javadoc中: 不推荐使用。很少适合使用此构造函数。通常,静态工厂valueOf(int)是更好的选择,因为它可能会产生明显更好的空间和时间性能。构造一个新分配

  • 问题内容: 我正在尝试创建一个这样的: Eclipse给了我这个警告:“ 不赞成使用构造函数”。 弃用构造函数是什么意思,我该怎么办? 问题答案: 过时的字面意思是 不赞成的 ,但更准确的翻译将 退休 。 不推荐使用意味着此方法仍然可用,但您不应使用它。 它将逐步淘汰。有一种新方法可以做同样的事情 。不推荐使用的方法带有特殊的Javadoc注释: 用途 : 要么 。 如API文档所建议。

  • @adilooze解决方案

  • 问题内容: 如何构建接收另一个点(x,y)并复制其值的复制构造函数? 我决定签名:,但我不知道该写些什么… Point类看起来像: 我试过了: 但我几乎可以肯定我会做得更好。 n 问题答案: 不,您的尝试 绝对没问题…(我已经更正了参数类型。) 我很想进行make 和final的操作,并且使该类final的操作,但这是因为我喜欢不可变的类型。其他人肯定有不同意见:) 在继承层次结构上进行克隆比较棘

  • 我有一个下面的类,它是子类的基本DTO。我需要修复受保护的构造函数,因为Intellij说:“参数化类生成器的原始使用”。有人可以看看,并指出如何重新编写这个构造函数,以支持通用风格在这里。 你觉得可能吗?有人看到此代码的潜在问题吗?感谢先进。

  • JavaScript 中的构造函数和其它语言中的构造函数是不同的。 通过 new 关键字方式调用的函数都被认为是构造函数。 在构造函数内部 - 也就是被调用的函数内 - this 指向新创建的对象 Object。 这个新创建的对象的 prototype 被指向到构造函数的 prototype。 如果被调用的函数没有显式的 return 表达式,则隐式的会返回 this 对象 - 也就是新创建的对象