为什么库使用注释?

时间:2019-04-13 05:31:07

标签: java android annotations

我一直想知道为什么android支持库使用注释?

我已经实现了一些常见的android库,例如ButterKnife,Retrofit。但是,我看到其中一种常见的行为。他们使用注释来 提供其功能。 我想知道为什么他们不使用某些方法或接口来实现他们提供的功能,相比于这些,使用注释有什么优势吗?

2 个答案:

答案 0 :(得分:1)

注释基本上用于通知编译器某些操作。喜欢: @Override批注将通知编译器检查是否正在重写此方法。编译器将检查条件是否已满,否则将引发异常。

答案 1 :(得分:1)

  

我一直想知道为什么android支持库使用注释?

     

我已经实现了一些常见的android库,例如   黄油刀,翻新。但是,我看到其中一种常见的行为。   他们使用注释来提供其功能。

ButterKnife或Retrofit使用的默认注释和特定注释有不同的用途。诸如@Override@NonNull@StringRes@IntRes等默认注释是一种告诉编译器有关代码特定约束的方法。

ButterKnife中的特定注释(例如@BindView@OnClick)用于代码生成。 ButterKnife注释处理器将查找所有匹配的注释,并根据该注释作为规则生成代码。

  

我想知道为什么他们不使用某些方法或接口来实现   他们提供的功能,使用中是否有任何收益   在这些注释上?

它们可以提供您所说的功能,但是通常可以通过使用反射来实现,这对于性能和难以维护而言代价很高,有关详细信息,请参见https://softwareengineering.stackexchange.com/questions/101187/are-there-problems-with-using-reflection。因此使用代码生成。