Java 使用带有@RestrictTo注释的类安全吗

Java 使用带有@RestrictTo注释的类安全吗,java,android,android-room,Java,Android,Android Room,我发现RoomSQLiteQuery类有很好的用法,但它是用@RestrictTo注释的。即使IDE显示警告,它也可以正常编译,而且看起来工作正常 @RestrictTo只是在我们不应该使用某些东西时发出警告,它实际上不能禁止你使用它,对吗?它在生产中会一直起作用吗 所以我只是想检查一下,这样我确信它会起作用 不需要给出建议“不要使用它,那很糟糕……”,我只是问它是否安全使用。(甚至想到你可能会问我,如果你真的感兴趣,我为什么需要:)) 编辑: 我已经从room生成的文件中复制了使用RoomSQ

我发现RoomSQLiteQuery类有很好的用法,但它是用@RestrictTo注释的。即使IDE显示警告,它也可以正常编译,而且看起来工作正常

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

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

不需要给出建议“不要使用它,那很糟糕……”,我只是问它是否安全使用。(甚至想到你可能会问我,如果你真的感兴趣,我为什么需要:))

编辑:


我已经从room生成的文件中复制了使用RoomSQLiteQuery(用@RestrictTo注释的类)的代码。所以,如果我不能使用,那么在生成代码时,room如何使用它呢?因为房间生成的类在同一个包中。
另外,只有使用访问修饰符,我们才能限制某些类/函数/什么的使用,这难道不是真的吗?

@RestrictTo
表示只应从特定范围内访问带注释的元素(由RestrictTo.scope定义)

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

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

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

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

您始终可以复制代码(具有正确的属性并与许可证保持一致!),但随后您失去了复制代码的第三方库的支持,因为他们从未打算在外部使用


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

实际上,您不应该使用该API。我猜因为room是一个外部的图书馆,所以你可以使用这个类。否则,如果它来自SDK,您将无法使用它。我已经从room生成的文件中复制了使用RoomSQLiteQuery(用@RestrictTo注释的类)的代码。所以,如果我不能使用,那么在生成代码时房间如何使用呢。另外,只有使用访问修饰符,我们才能限制某些类/函数/什么的使用,这不是真的吗?谢谢,我只使用了一个函数。@captain严重问题,其中提到不建议使用@RestrictedTo?这背后的理由是什么?