我想在Java中像枚舉一樣實現C++,所以我想使用靜態字段作爲計數器。這是我的當前的解決方案:Java - 使用靜態計數器的枚舉
public enum ETest
{
Test1(2),
Test2,
Test3,
Test4(7),
Test5;
private static class CounterHolder
{
private static int mCount = 0;
}
ETest()
{
mValue = CounterHolder.mCount;
CounterHolder.mCount++;
}
ETest(int pValue)
{
CounterHolder.mCount = pValue;
mValue = CounterHolder.mCount;
CounterHolder.mCount++;
}
public int toInt()
{
return mValue;
}
private final int mValue;
}
從上面的代碼我應該得到: Test1.toInt() - > 2,Test2.toInt() - > 3,Test3.toInt() - >圖4,TEST4 .toInt() - > 7,Test5.toInt() - > 8
此代碼適用於經過測試的Android Java VM,但我不確定它是否是有效的Java代碼以及它是否可以正常工作因爲AFAIK enum是在靜態字段之前初始化的,但是在這種情況下,它看起來像使用靜態字段的嵌套類的初始化工作正常(沒有嵌套類,簡單靜態字段不起作用)。
最好的問候, Patryk
別嘗試將C++結構轉換爲Java。 Java引入強大的方式被濫用爲簡單的C++風格的值容器。 –
我敢肯定,該代碼將不會編譯 - 請使用問題真正的代碼... –
@GyroGearless那麼這個代碼編譯,因爲我用按需初始化,我只是不知道這會不會造成在其他JVM上運行時出現問題。 – nadro