我想知道两件事:
我的蛋糕:
public void init( int boxID ) {
initComponentText();
switch ( boxID ) {
case ID_IMAGE:
initComponentImg();
break;
case ID_BOOL:
initComponentBool();
break;
case ID_BOTH:
initComponentBool();
initComponentImg();
break;
}
}
private void initComponentImg() {
img = new ComponentImg( switchComponent );
}
private void initComponentBool() {
bool = new ComponentBool( switchComponent );
}
private void initComponentText() {
text = new ComponentText( switchComponent );
}
感谢您的帮助和提示。
答案 0 :(得分:3)
我认为如果条件对降低代码复杂度更有帮助;
if(ID_IMAGE==boxID||ID_BOTH==boxID)
initComponentImg();
if(ID_BOOL==boxID||ID_BOTH==boxID)
initComponentBool();
答案 1 :(得分:1)
假设您让ID_BOTH
成为ID_BOOL
和ID_IMAGE
的按位或,以及您的个人"类型"不具有重叠的二进制值(例如,2的幂),您可以按位-AND boxId
来检查个性。使用此方法,您可以按位或按住所有类型。
int ID_NONE = 0
int ID_BOOL = 1;
int ID_IMAGE = 2;
int ID_TEXT = 4;
int ID_BOOL_IMG = ID_BOOL | ID_IMAGE; // 3
int ID_BOOL_TEXT = ID_BOOL | ID_TEXT; // 5
int ID_BOOL_ALL = ID_BOOL | ID_IMAGE | ID_TEXT; // 7
if ((boxId & ID_BOOL) == ID_BOOL) {
initComponentBool(); // runs for boxId = 1, 3, 7
}
if ((boxId & ID_IMAGE) == ID_IMAGE) {
initComponentImg(); // runs for boxId = 2, 3, 7
}
if ((boxId & ID_TEXT) == ID_TEXT) {
initComponentText(); // runs for boxId = 4, 5, 7
}
答案 2 :(得分:0)