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

时间:2017-11-24 19:57:15

标签: java android android-room

我找到了RoomSQLiteQuery类的一个很好的用法,但它使用@RestrictTo进行了注释。甚至认为IDE显示警告它正常编译,它看起来也能正常工作。

@RestrictTo只用于在我们不应该使用某些东西时发出警告,它实际上不能禁止你使用它,对吧?它总是在生产中工作?

所以我只是想检查一下,这样我确定它会起作用。

无需提供建议“不要使用它,这很糟糕......”,我只想问它是否安全使用。 (甚至以为如果你真的有兴趣,你可能会问我为什么还需要)。)

编辑:

我已经从由room生成的文件中使用了RoomSQLiteQuery(带有@RestrictTo注释的类)的代码。因此,如果我无法使用,那么在生成代码时房间如何使用IT?因为房间生成的类在同一个包中  也不是真的只使用访问修饰符我们可以限制某些类/函数/ whaterever的使用吗?

1 个答案:

答案 0 :(得分:2)

@RestrictTo

  

表示只能在特定范围内(由RestrictTo.Scope定义)访问带注释的元素。

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

这可能意味着没有上下文的许多事情:库的创建者可能不想对用于非预期目的的代码负责 - 特别是当我们讨论由操作系统的创建者支持的库时。

正如他们在源代码中记录的那样,这个类被用作中间人和

  

此类用作保持绑定参数的中间位置,以便我们可以运行   使用正确的类型进行游标查询,而不是将所有内容都作为字符串传递。

您可以随时复制代码(具有正确的属性并与LICENSE对齐!),但是您从第3方库中删除了您复制代码的支持 - 因为它们从未打算在外面使用。

简而言之,一般建议不要使用@RestrictedTo课程,如果你这样做,请准备好自己维护