【问题标题】:Android Header? How to create enums visible in whole project?安卓头文件?如何创建在整个项目中可见的枚举?
【发布时间】:2014-09-01 21:43:23
【问题描述】:

我正在寻找一种方法来创建“标题”或类似的东西来指定一些变量,例如:

enum Misc
{
    double EFFECT_DAMAGE = Math.pow(2,0);
    double EFFECT_ABSORB = Math.pow(2,1);
    double EFFECT_HEAL   = Math.pow(2,2);
    int SPELL_FIREBALL   = 51673;
}

并且在我希望能够编写的每个 .java 文件中:

double effect = 1;
if (effect == EFFECT)
{
    ...some code...
}

有什么好办法吗? 我现在正在创建一个迷你游戏,并且希望所有文件都整洁有序,以便将来在我的项目变得更大时更轻松地管理它。

提前致谢。

【问题讨论】:

  • 扩展 Application 并将枚举放入其中。 stackoverflow.com/questions/4572338/…
  • 我能知道为什么我的回答没有让你满意吗?
  • 你的代码很好。我首先使用它,但后来我想在开关中使用代码,使用你的代码我遇到了一个问题,它是一种不好的类型和类似的东西,我切换到 sergiomse 答案,它也很好用+它在开关中工作。

标签: android enums


【解决方案1】:
public enum Misc 
{
    EFFECT_DAMAGE(0), // 2^0
    EFFECT_ABSORB(1), // 2^1
    FIREBALL(245151);

    private double value;

    private Misc(double d){
        value = d;
    }

    public String toString(){
        return String.valueOf(value);
    }
}

像这样访问:

System.out.println("Fireball damage:" + Misc.FIREBALL);

【讨论】:

    【解决方案2】:

    您不能以这种方式将值分配给 java 中的枚举。

    相反,您应该使用带有公共静态最终变量的公共类来使它们成为常量。

    public class Misc {
        public static final double EFFECT_DAMAGE = Math.pow(2,0);
        public static final double EFFECT_ABSORB = Math.pow(2,1);
        public static final double EFFECT_HEAL   = Math.pow(2,2);
        public static final int SPELL_FIREBALL   = 51673;
    }
    

    所以你可以在你的代码中使用

    if (effect == Misc.EFFECT_DAMAGE )
    {
        ...some code...
    }
    

    如果你想只使用没有类名的字段,你应该将类导入为静态:

    import static test.Misc.*;
    
    ....
    
    if (effect == EFFECT_DAMAGE ) {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 2017-08-19
      • 2018-11-06
      • 1970-01-01
      相关资源
      最近更新 更多