Java 使用带有@RestrictTo注释的类安全吗
我发现RoomSQLiteQuery类有很好的用法,但它是用@RestrictTo注释的。即使IDE显示警告,它也可以正常编译,而且看起来工作正常 @RestrictTo只是在我们不应该使用某些东西时发出警告,它实际上不能禁止你使用它,对吗?它在生产中会一直起作用吗 所以我只是想检查一下,这样我确信它会起作用 不需要给出建议“不要使用它,那很糟糕……”,我只是问它是否安全使用。(甚至想到你可能会问我,如果你真的感兴趣,我为什么需要:)) 编辑:Java 使用带有@RestrictTo注释的类安全吗,java,android,android-room,Java,Android,Android Room,我发现RoomSQLiteQuery类有很好的用法,但它是用@RestrictTo注释的。即使IDE显示警告,它也可以正常编译,而且看起来工作正常 @RestrictTo只是在我们不应该使用某些东西时发出警告,它实际上不能禁止你使用它,对吗?它在生产中会一直起作用吗 所以我只是想检查一下,这样我确信它会起作用 不需要给出建议“不要使用它,那很糟糕……”,我只是问它是否安全使用。(甚至想到你可能会问我,如果你真的感兴趣,我为什么需要:)) 编辑: 我已经从room生成的文件中复制了使用RoomSQ
我已经从room生成的文件中复制了使用RoomSQLiteQuery(用@RestrictTo注释的类)的代码。所以,如果我不能使用,那么在生成代码时,room如何使用它呢?因为房间生成的类在同一个包中。
另外,只有使用访问修饰符,我们才能限制某些类/函数/什么的使用,这难道不是真的吗?
@RestrictTo
表示只应从特定范围内访问带注释的元素(由RestrictTo.scope定义)
它用于表示特定的代码块是为特定目的编写的,并且可能不打算在该范围之外使用
这可能意味着许多没有上下文的事情:库的创建者可能不想对用于非预期目的的代码承担责任——特别是当我们谈论由操作系统创建者支持的库时
正如他们在源代码中记录的那样,这个类被用作中介和
该类用作保留绑定参数的中间位置,以便我们可以运行
游标使用正确的类型进行查询,而不是将所有内容作为字符串传递
您始终可以复制代码(具有正确的属性并与许可证保持一致!),但随后您失去了复制代码的第三方库的支持,因为他们从未打算在外部使用
简而言之,一般建议不要将
@RestrictedTo
类使用,如果使用,请准备自己维护它实际上,您不应该使用该API。我猜因为room是一个外部的图书馆,所以你可以使用这个类。否则,如果它来自SDK,您将无法使用它。我已经从room生成的文件中复制了使用RoomSQLiteQuery(用@RestrictTo注释的类)的代码。所以,如果我不能使用,那么在生成代码时房间如何使用呢。另外,只有使用访问修饰符,我们才能限制某些类/函数/什么的使用,这不是真的吗?谢谢,我只使用了一个函数。@captain严重问题,其中提到不建议使用@RestrictedTo?这背后的理由是什么?