我一直想知道为什么android支持库使用注释?
我已经实现了一些常见的android库,例如ButterKnife,Retrofit。但是,我看到其中一种常见的行为。他们使用注释来 提供其功能。 我想知道为什么他们不使用某些方法或接口来实现他们提供的功能,相比于这些,使用注释有什么优势吗?
答案 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。因此使用代码生成。