使用带有 @RestrictTo 注释的 类 是否安全

Is it safe to use classes annotated with @RestrictTo

我发现了 RoomSQLiteQuery class 的一个很好的用法,但它使用 @RestrictTo 注释。甚至认为 IDE 显示警告它编译正常并且看起来它也正常工作。

@RestrictTo只是在我们不应该使用某物时发出警告,它实际上不能禁止你使用它,对吧?它会一直在生产中工作吗?

所以我只是想检查一下,以确保它能正常工作。

无需提供建议"Don't use it, that's bad...",我只是想问一下使用起来是否安全。 (甚至认为你可能会问我,如果你真的感兴趣的话,我为什么需要 :))

编辑:

我从 room 生成的文件中复制了使用 RoomSQLiteQuery(class 注释为@RestrictTo)的代码。那么,如果我无法使用,那么 room 在生成代码时如何使用 IT?因为房间生成 classes 在同一个包中。
难道只使用访问修饰符我们就可以限制某些 class/function/whaterever 的使用吗?

@RestrictTo

Denotes that the annotated element should only be accessed from within a specific scope (as defined by RestrictTo.Scope).

它用于表示特定代码块是为特定目的而编写的,可能不打算在该范围之外使用。

这在没有上下文的情况下可能意味着很多事情:库的创建者可能不想对用于意外目的的代码负责 - 特别是当我们谈论由 OS.

正如他们在源代码中记录的那样,这个 class 用作中介,

This class is used as an intermediate place to keep binding arguments so that we can run Cursor queries with correct types rather than passing everything as a string.

您始终可以复制代码(使用适当的归因并与许可保持一致!),但是您失去了从中复制代码的第 3 方库的支持 - 因为他们从未打算在外部使用它。

简而言之,一般建议不要使用@RestrictedTo classes,如果使用,请准备好自己维护它