如何避免参数化枚举与@IntDef.
-
我想保留一些与每个枚举/类型关联的静态详细信息(例如关联的 URl 、关联的可绘制对象等)。
TYPE_ONE(R.string.res, Urls.URL1),
TYPE_TWO(R.string.res, Urls.URL2),
TYPE_THREE(R.string.res, Urls.URL3),
TYPE_FOUR(R.string.res, Urls.URL4),
TYPE_FIVE(R.string.res, Urls.URL5),
TYPE_SIX(R.string.res, Urls.URL6);
private final int mResId;
private final String mUrl;
Types(int titleResId, String url) {
mResId = titleResId;
mUrl = url;
}
public int getRes() {
return mTitleResId;
}
public String getURL() {
return mUrl;
}
执行此操作的优化方法是什么?
我知道enum
s 比整数消耗更多的资源,并且 Android 上禁止使用它们,但是,在像您所描述的情况下,我认为开销可以通过可读性的提高来补偿。
话虽这么说,一种使用方法@IntDef
并将更多变量链接到它可能是私有地和静态地声明您需要的任何资源的数组,并使用传递静态 getter 来访问它们@IntDef
.
public class Constants {
public static final int PAGE_ONE = 0;
public static final int PAGE_TWO = 1;
public static final int PAGE_THREE = 2;
@IntDef(value={PAGE_ONE, PAGE_TWO, PAGE_THREE})
public @interface PageType {}
private static final SparseArray<String> PAGE_TITLES = new SparseArray<>();
private static final SparseArray<Integer> PAGE_IMAGES = new SparseArray<>();
static {
PAGE_TITLES.put(PAGE_ONE, "PAGE_ONE");
PAGE_IMAGES.put(PAGE_ONE, R.drawable.page_one);
PAGE_TITLES.put(PAGE_TWO, "PAGE_TWO");
PAGE_IMAGES.put(PAGE_TWO, R.drawable.page_two);
PAGE_TITLES.put(PAGE_THREE, "PAGE_THREE");
PAGE_IMAGES.put(PAGE_THREE, R.drawable.page_three);
}
public static int getPageDrawable(@PageType int pageNumber){
return PAGE_IMAGES.get(pageNumber);
}
public static String getPageTitle(@PageType int pageNumber){
return PAGE_TITLES.get(pageNumber);
}
private Constants(){}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)