Guava中的注解
@Beta注解
1 | /** |
Beta注解表示被它标识的方法,字段,在将来的版本中存在改变的可能,甚至被删除掉。带有此注解的API不做任何兼容性的保证。因此,被它标记的相关属性和方法,是不建议在生产中使用的。
@GwtCompatible
1 | /** |
被它修饰的方法或者类型,是可以和GWT,即(Google Tool kit)兼容的,可以一起使用。如果一个方法使用这个注释,说明这个方法的返回值是 GWT 兼容的
@serializable
当设置为true时,说明被它注解的方法或者类型是支持GWT序列化的
@emulated
当设置为true时,说明被它注解的方法或类型是支持在GWT中被模拟的
@GwtIncompatible
1 | /** |
被它修饰的方式,字段等是不和GWT兼容的。
value()
说明不兼容GWT的原因
@VisibleForTest
1 | /** |
当它标记在一个方法或者类型上的时候,它将给予给类型或者方法更多的可见性,仅仅别用在测试代码中。
意思是什么呢?
它最大的用处就是,可以代替Java 反射来测试私有方法。
看下面的代码
1 | public class PrivateData { |
下面是测试类
1 | public class PrivateDataTest { |
通过上面的代码看出, 被测试的testPrivate方法的可见性还是被改成Protected。也就是,VisibleForTesting只是一个注释,一个元数据metadata,它并没有进入程序逻辑,也没有被转化成字节码byte code 从而被JVM执行。
@GwtTransient
1 | /** |
它实际上与Java的transient
关键字含义相同,但是除了GWT之外,所有的序列化系统都不会对它进行处理。
一般情况下,应该倾向于使用Java中的transient
关键字。但是对于多个序列化系统一起使用的类型,它可能很有用。
请注意,GWT实际上将为此目的接受任何名为GwtTransient的注释。这样做是为了允许库支持GWT序列化,而无需直接依赖GWT发行版。
@AllowConcurrentEvents
1 | /** |
被它修饰的订阅者方法,将会是线程安全的。具体细节,和@Subscribe注解一起,留到事件总线章节一起说明。
@Subscribe
1 | /** |
被它修饰的方式,将会是一个事件总线的订阅者。具体细节,和@AllowConcurrentEvents注解一起,留到事件总线章节一起说明。
@IgnoreJRERequirement
1 | IgnoreJRERequirement {} |