java :需要常量表达式。 switch 语句使用一些在另一个类中定义的常量
java : constant expression required. switch satement use some constants which are defined in another calss
在 switch 语句中,我使用了一些在另一个 class 中定义的常量。
IDE告诉我constant expression required
.
我正在编写一个 Android 应用程序,在 MainActivity 中我这样写:
private static final int HOMEFRAGMENTINDEX = 0;
private static final int MESSAGEFRAGMENTINDEX = 1;
private static final int SNSFRAGMENTINDEX = 2;
private static final int DISCOVERYFRAGMENTINDEX = 3;
private static final int MINEFRAGMENTINDEX = 4;
public static int getHomefragmentindex() {
return HOMEFRAGMENTINDEX;
}
public static int getMessagefragmentindex() {
return MESSAGEFRAGMENTINDEX;
}
public static int getSnsfragmentindex() {
return SNSFRAGMENTINDEX;
}
public static int getDiscoveryfragmentindex() {
return DISCOVERYFRAGMENTINDEX;
}
public static int getMinefragmentindex() {
return MINEFRAGMENTINDEX;
}
在另一个 class 中,我使用这样的 switch 语句:
final int homeFragmentIndex = MainActivity.getHomefragmentindex();
final int messageFramentIndex = MainActivity.getMessagefragmentindex();
final int snsFragmentIndex = MainActivity.getSnsfragmentindex();
final int discoveryFragmentIndex = MainActivity.getDiscoveryfragmentindex();
final int mineFragentIndex = MainActivity.getMinefragmentindex();
switch (mCurIndicator) {
case homeFragmentIndex:
// do something
break;
case messageFramentIndex:
// do something
break;
case snsFragmentIndex:
// do something
break;
case discoveryFragmentIndex:
// do something
break;
case mineFragentIndex:
// do something
break;
default:
break;
}
Android 工作室告诉我 constant expression required
,但我确实使用 static fianl int
。也许你可以帮助解决这个问题,谢谢。
class Some{
public static final int HOMEFRAGMENTINDEX = 0;
public static final int MESSAGEFRAGMENTINDEX = 1;
public static final int SNSFRAGMENTINDEX = 2;
public static final int DISCOVERYFRAGMENTINDEX = 3;
public static final int MINEFRAGMENTINDEX = 4;
}
class AnotherClass{
void yourMethod(int mCurIndicator){
switch (mCurIndicator) {
case Some.HOMEFRAGMENTINDEX:
// do something
break;
case Some.MESSAGEFRAGMENTINDEX:
// do something
break;
case Some.SNSFRAGMENTINDEX:
// do something
break;
case Some.DISCOVERYFRAGMENTINDEX:
// do something
break;
case Some.MINEFRAGMENTINDEX:
// do something
break;
default:
break;
}
}
}
在 switch 语句中,我使用了一些在另一个 class 中定义的常量。
IDE告诉我constant expression required
.
我正在编写一个 Android 应用程序,在 MainActivity 中我这样写:
private static final int HOMEFRAGMENTINDEX = 0;
private static final int MESSAGEFRAGMENTINDEX = 1;
private static final int SNSFRAGMENTINDEX = 2;
private static final int DISCOVERYFRAGMENTINDEX = 3;
private static final int MINEFRAGMENTINDEX = 4;
public static int getHomefragmentindex() {
return HOMEFRAGMENTINDEX;
}
public static int getMessagefragmentindex() {
return MESSAGEFRAGMENTINDEX;
}
public static int getSnsfragmentindex() {
return SNSFRAGMENTINDEX;
}
public static int getDiscoveryfragmentindex() {
return DISCOVERYFRAGMENTINDEX;
}
public static int getMinefragmentindex() {
return MINEFRAGMENTINDEX;
}
在另一个 class 中,我使用这样的 switch 语句:
final int homeFragmentIndex = MainActivity.getHomefragmentindex();
final int messageFramentIndex = MainActivity.getMessagefragmentindex();
final int snsFragmentIndex = MainActivity.getSnsfragmentindex();
final int discoveryFragmentIndex = MainActivity.getDiscoveryfragmentindex();
final int mineFragentIndex = MainActivity.getMinefragmentindex();
switch (mCurIndicator) {
case homeFragmentIndex:
// do something
break;
case messageFramentIndex:
// do something
break;
case snsFragmentIndex:
// do something
break;
case discoveryFragmentIndex:
// do something
break;
case mineFragentIndex:
// do something
break;
default:
break;
}
Android 工作室告诉我 constant expression required
,但我确实使用 static fianl int
。也许你可以帮助解决这个问题,谢谢。
class Some{
public static final int HOMEFRAGMENTINDEX = 0;
public static final int MESSAGEFRAGMENTINDEX = 1;
public static final int SNSFRAGMENTINDEX = 2;
public static final int DISCOVERYFRAGMENTINDEX = 3;
public static final int MINEFRAGMENTINDEX = 4;
}
class AnotherClass{
void yourMethod(int mCurIndicator){
switch (mCurIndicator) {
case Some.HOMEFRAGMENTINDEX:
// do something
break;
case Some.MESSAGEFRAGMENTINDEX:
// do something
break;
case Some.SNSFRAGMENTINDEX:
// do something
break;
case Some.DISCOVERYFRAGMENTINDEX:
// do something
break;
case Some.MINEFRAGMENTINDEX:
// do something
break;
default:
break;
}
}
}