智能@IntDef注释,带有切换返回功能

时间:2016-11-14 15:06:02

标签: android

我使用以下 @IntDef 声明:

@IntDef({ViewTypes.TYPE_RECIPE, ViewTypes.TYPE_CAMPAIGN, ViewTypes.TYPE_INFO})
@Retention(RetentionPolicy.SOURCE)
public @interface ViewTypes {
    int TYPE_RECIPE = 0;
    int TYPE_CAMPAIGN = 1;
    int TYPE_INFO = 2;
}

这个方法根据位置返回其中一个int:

@ViewTypes
public int getType(int position) {
    if (position < 3) {
        return ViewTypes.TYPE_RECIPE;
    } else if (position < 5) {
        return ViewTypes.TYPE_CAMPAIGN;
    } else {
        return ViewTypes.TYPE_INFO;
    }
}

我在交换机中使用该方法返回一些内容:

public View getView(int position) {
    switch (getType(position)) {
        case ViewTypes.TYPE_RECIPE:
            return getRecipeView(position);
        case ViewTypes.TYPE_CAMPAIGN:
            return getCampaignView(position);
        case ViewTypes.TYPE_INFO:
            return getInfoView();
    }
    return null; // <-- unreachable 
}

现在我假设当我“注意”所有可能的 ViewTypes 时,Annotation知道我不需要最后一行(“return null”)。事实上它是无法到达的,不是吗?如果我删除“return null”,我会收到错误“Missing return statement”。

编辑: 我只是发现我实际上可以回复,例如getType函数中的“5”,它将标记“5”,并带有红色错误消息“必须是......之一”。但该应用程序仍在构建。那么有没有办法将其转换为编译错误而不是“警告”?

0 个答案:

没有答案