今日在寫Android時突然想到switch能不能跟string一起使用
稍微問了一下我師父"谷哥"下了一下關鍵字 "android switch string"
就可以看到很多有趣的文章與解法
文章來源:
其中有提到
Java (before version 7) does not support String in switch/case. But you can achieve the desired result by using an enum.
以下就開始記錄我們實做的部分吧!
private enum FragmentNames { FragmentOne, FragmentTwo, FragmentThree;}
String mFragmentName = getSupportFragmentManager().getFragments().get(1).getClass().getSimpleName(); FragmentNames mFragmentNames = FragmentNames.valueOf(mFragmentName);
switch (mFragmentNames){ case FragmentOne: Log.d(TAG, "Fragment One");
break; case FragmentTwo: Log.d(TAG, "Fragment Two"); break; case FragmentThree: Log.d(TAG, "Fragment Three"); break;
}
測試結果:成功!
mFragmentName為string來源(您要判斷的文字來源)
透過enum的方式達到switch使用文字來做判斷的功能。
題外還稍微看了一些"Enum"的相關用法
基本用法:
public enum Names { John,Tom,Sam
} public void getNames(){ for(Names name: Names.values()) System.out.println(name.toString());
}
輸出結果可以看到:
John Tom Sam
當我們使用enum的時候,enum會照順序分配一個排列的私有變數,透過ordinal()可以將其取出。
public void getNames(){ for(Names name: Names.values()) { System.out.println(name.toString() + ":" + name.ordinal());
}
}
輸出結果可以看到:John : 0 Tom : 1 Sam : 2
在enum中我們也可以帶入我們想要指定的值至該參數中:
public enum Names { John(00001),
Tom(00002),
Sam(00003);
private int studentId;
private Names(int value) { this.studentId = value;
} public int getValue() { return this.studentId;
} } public void getNames(){ for(Names name: Names.values()) { System.out.println("Student:" + name.toString() + "\n" + "ID:"+ name.getValue());
}
}
輸出結果可以看到:Student:John
ID:00001 Student:Tom
ID:00002 Student:Sam
ID:00003
The Java™ Tutorials
沒有留言:
張貼留言