相关疑难解决方法(0)

在Java中使用int值的枚举

什么是Java等价的C#:

enum Foo
{
  Bar = 0,
  Baz = 1,
  Fii = 10,
}
Run Code Online (Sandbox Code Playgroud)

c# java enums

51
推荐指数
2
解决办法
3万
查看次数

在Java中扩展枚举

我有一个枚举,让我们称之为A:

public enum A
{
    A,
    B
}
Run Code Online (Sandbox Code Playgroud)

我有一个枚举A的函数:

public void functionA(A enumA)
{
    //do something
}
Run Code Online (Sandbox Code Playgroud)

如何创建另一个枚举,可能调用B我可以传递给functionA?像这样的东西?

public enum B
{
    C
}

functionA(B.C);
Run Code Online (Sandbox Code Playgroud)

我知道你不能扩展枚举,但我还有其他选择吗?实现这一目标的最佳方法是什么?

java enums

23
推荐指数
3
解决办法
7万
查看次数

我可以扩展一个类并覆盖封闭的枚举类型吗?

如果我有一个包含enum类型的类,我可以扩展此类并覆盖枚举类型或向此枚举添加更多常量吗?目的是用户将能够在getColor()不知道动态对象是来自基类还是派生类的情况下调用方法.例如:

public class Car {

    private String name;

    private CarColors color;

    public enum CarColors {
        BLUE,
        GREEN
    }

    public Car(CarColors c) {
        color=c;
    }

    public CarColors getColor() {
        return color;
    }
}

public class RacingCar extends Car {

    private CarColors color;

    public RacingCar(CarColors c) {
        color=c;
    }

    public enum CarColors {
        BLUE,
        GREEN,
        RED
    }

    @Override //?????
    public CarColors getColor() {
        return color;
    }
}
Run Code Online (Sandbox Code Playgroud)

在主要:

Car racingCar = new RacingCar();
CarColors color = racingCar.getColor();
Run Code Online (Sandbox Code Playgroud)

java enums

15
推荐指数
2
解决办法
2万
查看次数

枚举中的静态最终方法

所以我已经浏览了谷歌和SO,我找不到一个例子或解释:static final方法的目的是enum什么?

我的理解:

  1. 声明方法static可以像函数/过程语言一样访问.
  2. final意味着你无法覆盖它.无法更改参考.由于评论中指出的assylias static也不能被覆盖.
  3. enums不能被子类化,这里解释.

那么static final,enum如果它永远不会被覆盖,那么s中的方法有什么意义,因为它不会有子类?

java oop enums

13
推荐指数
1
解决办法
8429
查看次数

在Java中Enum和基于枚举的类实现之间的优缺点是什么?

我最近遇到一篇文章讨论在C#中使用基于枚举的类实现,这非常令人印象深刻.这里的第二个是Java.但是,我的同事建议我改用Enum.

任何人都可以指出使用它们的任何利弊,何时使用它?

java enums

7
推荐指数
1
解决办法
2156
查看次数

Java Enum引用另一个枚举

我希望能够定义一个包含另一个枚举的枚举类以及它自己的值.例如, :

public enum A {
    A1, A2, A3;
}

public enum B{
    B1, B2, ...(somehow define references to all values in enum A)
}
Run Code Online (Sandbox Code Playgroud)

这样枚举B中包含的任何值必须定义为initself(例如B1,​​B2)或枚举A的任何值.

谢谢,

java enums

6
推荐指数
1
解决办法
1万
查看次数

枚举中的继承

我给了一个枚举ABC和一个类测试,我必须调用doSomething但我不能传递ABC枚举作为参数.

enum ABC{
   A,B,C;
 }

Class Test{

  public void doSomething(ABC abc)
  {
    //some work
   }

}
Run Code Online (Sandbox Code Playgroud)

在这里,我想要一个enum DEF,它应该包含ABC的所有成员,并且它还应该包含枚举XYZ的成员(我想要一个应该包含两个枚举成员的枚举DEF(ABC和XYZ)).像这样的例子.

 enum DEF 
 {
    A,B,C,X,Y,Z,D;
 }

 enum xyz{
     X,Y,Z;
 }
Run Code Online (Sandbox Code Playgroud)

所以我可以调用doSomething方法,它只接受ABC枚举作为参数.我想用DEF.Example调用doSomething()方法

  class Demo{

     public static void main(String[] ags)
     {
         Test test= new Test();
         test.doSomething(DEF.A);
      }

 }
Run Code Online (Sandbox Code Playgroud)

我比较新鲜.请向我提供任何帮助或建议.我将感谢你.

java inheritance enums

5
推荐指数
1
解决办法
866
查看次数

为什么不从Enum <E扩展Enum <E >>

我偶然发现了以下问题,我无法从Java 1.5(java.lang包)中定义的这个类扩展和实现

public abstract class Enum<E extends Enum<E>> {...
}..
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是创建自己的枚举类型,它具有不同的序数值.我不想通过使用不同的序数名称来实现它,比如getCode()等.所以我想我可以继续扩展上面的类.

public final class XYZ extends Enum<XYZ> { //Does not work.
  //
  A("A", 1),
  B("B", 7);
  .
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以做到以下几点:

public enum NEWEnum {
   A(1),
   B(7);

   private int code;
   private NEWEnum(int code) {
     this.code = code;
   }
   public int getCode() {
     return this.code;
   }
}
Run Code Online (Sandbox Code Playgroud)

我宁愿在Enum中使用通常的命令,如ordinal()和name().

java enums

4
推荐指数
1
解决办法
1032
查看次数

创建一个枚举的超类

我目前使用枚举定义如下:

public enum Language{
    English("english", "eng", "en", "en_GB", "en_US"),
    German("german", "de", "ge"),
    Croatian("croatian", "hr", "cro"),
    Russian("russian");

    private final List<String> values;

    Language(String ...values) {
        this.values = Arrays.asList(values);
    }

    public List<String> getValues() {
        return values;
    }
    public static Language find(String name) {
        for (Language lang : Language.values()) {
            if (lang.getValues().contains(name)) {
                return lang;
            }
        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

事实是,我将不得不使用相同的方法和构造函数使用几个枚举.在我的例子中唯一改变的是枚举本身的值.

有没有办法让我创建一个我可以重用的枚举的超类?

所以我可以这样做:

public Language extends(specializedEnum){
        English("english", "eng", "en", "en_GB", "en_US"),
        German("german", "de", "ge"),
        Croatian("croatian", "hr", "cro"),
        Russian("russian");
}
Run Code Online (Sandbox Code Playgroud)

提前谢谢你!

java inheritance enums

1
推荐指数
2
解决办法
8028
查看次数

标签 统计

enums ×9

java ×9

inheritance ×2

c# ×1

oop ×1