Android:Android支持注释“RestrictTo”

10

我正在了解 Android 支持注释,其中我遇到了 "@RestrictTo" 注释;它解释了开发人员可以定义的不同范围。是否有人能详细解释一下如何使用这些注释,并提供一些示例呢?

任何线索都将不胜感激!

2个回答

3

它用于元编程访问修饰符。Java允许从任何地方访问任何public方法,而@RestrictTo适用于RestrictTo.Scope,将访问限制扩展到Java本身不知道的其他范围。

GROUP_ID
LIBRARY
LIBRARY_GROUP
SUBCLASSES
TESTS

例如,SUBCLASSES 就像 protected 一样,但如果开发人员希望,它可以从任何地方访问。基本上,您可以将其视为建议,而不是直接的编译器执行。

2
我试图使用这个注解来阻止另一个项目调用我的库项目中的方法。但是它没有起作用,这是我正确使用它的场景吗? - Pavan
我会这样说。 - tynn
但是,如果方法被注释为@RestrictTo,无论它是公共的,你都不能调用该方法。 - azizbekian
6
我可以从另一个项目中调用这个方法,而我在该项目中已使用了这个库。 - Pavan

-1

RestrictTo注解用于限制其注释的变量的作用范围。在RestrictTo注解中列出了一些范围,例如LIBRARYLIBRARY_GROUPTESTSSUBCLASSES。当变量使用RestrictTo注解时,该变量的属性不会在Android Studio中列为建议。

例如,如果我在getter中注释了该变量

@RestrictTo(RestrictTo.Scope.LIBRARY)
public @Nullable StudentInfo getInfo() {
  return mStudentInfo;
}

class StudentInfo {
     private String mAddress
     
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     StudentInfo(String address) {
         mAddress = address
     }

     public String getAddress() {
         return mAddress
     }
}

在上面的例子中,由于StudentInfo受到LIBRARY范围的限制,当从库的范围外部调用时,StudentInfo方法的getAddress不会被列为IDE的建议。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接