gpt4 book ai didi

java - 如何在枚举中调用附加方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:47:54 26 4
gpt4 key购买 nike

enum Enum1
{
BIG(8), HUGE(10)
{
public String getName()
{
return "Huge";
}

public String getContry()
{
return "India";
}//additional Method
},
OVERWHELMING(16)
{
public String getName()
{
return "OVERWHELMING";
}
};
private int ounces;

public int getOunes()
{
return ounces;
}

public String getName()
{
return "Ponds";
}

Enum1(int ounces1)
{
ounces = ounces1;
}
}

class EnumAsInnerClass
{
Enum1 enumInnerClass;

public static void main(String[] args)
{
EnumAsInnerClass big = new EnumAsInnerClass();
big.enumInnerClass = Enum1.BIG;
EnumAsInnerClass over = new EnumAsInnerClass();
over.enumInnerClass = Enum1.OVERWHELMING;
EnumAsInnerClass huge = new EnumAsInnerClass();
huge.enumInnerClass = Enum1.HUGE;
System.out.println(big.enumInnerClass.getName());//Ponds
System.out.println(over.enumInnerClass.getName());//OVERWHELMING
System.out.println(huge.enumInnerClass.getName());//Huge
}
}

考虑上面的例子。如何为 HUGE 调用方法 getCountry?

如果没有办法调用这个方法,为什么Java会把它当作合法的呢?

最佳答案

(正如将近 4 年后指出的那样,我原来的答案是不正确的。)

你甚至不能用特定的枚举调用 Enum1.HUGE.getCountry(),这有点令人惊讶......但即使你可以,你也不能用一个任意 Enum1 值,这将更有用。

解决方案是阻止它成为一个额外的方法——在 Enum1 中添加一个 getCountry() 方法,要么返回一个默认值,要么可能抛出一个异常。 HUGE 然后可以覆盖该方法。

如果您可以声明一个特定的枚举值实现了一个接口(interface),那就太好了,但似乎没有相应的语法。

关于java - 如何在枚举中调用附加方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5959965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com