使用编译期注解处理器进行代码检查的示例
目前提供了两个注解Util和Singleton。
使用在工具类上,以便在编译时检查工具类是否符合以下规范:
- 工具类必须是类类型(不能是接口、枚举等类型),不能是抽象类,不能是内部类。
- 工具类必须有且仅有一个私有的构造方法。
- 工具类不能包含任何非静态成员方法。
- 工具类不能包含任何非静态成员变量。
使用及错误提示示例如下:
@Util
public class ActivityUtils {
public ActivityUtils() {
}
}
@Util
public class ActivityUtils {
}
@Util
public class ActivityUtils {
private ActivityUtils() {
}
private ActivityUtils(Context context) {
}
}
@Util
public class ActivityUtils {
private ActivityUtils() {
}
public void nonStaticMethod() {
}
}
@Util
public class ActivityUtils {
private Object nonStaticField;
private ActivityUtils() {
}
}
使用在单例类上,以便在编译时检查单例类是否符合以下规范:
- 单例类必须是类类型(不能是接口、枚举等类型),不能是抽象类。
- 单例类必须将所有的构造方法声明成私有的。
- 单例类必须声明有获取单例类实例的静态方法。
使用及错误提示示例如下:
@Singleton
public class ActivityManager {
private static ActivityManager sInstance;
public ActivityManager() {
}
public static ActivityManager getInstance() {
if (sInstance == null) {
sInstance = new ActivityManager();
}
return sInstance;
}
}
@Singleton
public class ActivityManager {
private static ActivityManager sInstance;
private ActivityManager() {
}
}