从车载app转车载FWK的carService,看源码的时候,看到很多注解,在此记录一下。
一、@IntDef和@Retention注解
这个注解我理解就是一个枚举的作用,即Android中的Enum差不多。
用法如下:
public class MyTest{
//定义几个常量值
public static final int ZERO = 0;//否应答NACK
public static final int ONE = 1;//接收完多包下行数据
public static final int TWO = 2;//完成发送多包下行数据
public static final int THREE = 3;//节点接收下行数据失败(数据无效)
//用IntDef定义包含几个常量,枚举类名用接口代替
@IntDef({
ZERO,
ONE,
TWO,
THREE
})
@Retention(RetentionPolicy.SOURCE)
public @interface EtcState {
}
/**
* @param state 0x0:否应答NACK
* 0x1:接收完多包下行数据
* 0x2:完成发送多包下行数据
* 0x3:节点接收下行数据失败(数据无效)
* @throws CarNotConnectedException
*/
//使用时,@EtcState约束了state,所以这里传以上定义好的4个常量值
public void sendEtcState(@EtcState int state) throws CarNotConnectedException {
try {
sendToEtcState(state);
} catch (RemoteException e) {
throw new CarNotConnectedException(e);
}
}
}
然后调用sendEtcState方法时如下:
sendEtcState(MyTest.ONE);
@StringDef用法也是如此。
记得导入包
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
|