问题:我需要根据不同的枚举值执行不同的操作或执行不同的代码行(可以通过调用不同的方法来完成),并且不想使用 if else。
假设我有以下枚举:
public enum Sports
{
FOOTBALL, HOCKEY;
}
Run Code Online (Sandbox Code Playgroud)
我们可以使用 Sports.FOOTBALL 和 Sports.HOCKEY 调用具有相同名称的不同方法(方法重载),甚至调用具有不同名称的不同方法吗?
public void method(parameter(s)) //call this method when Enum is Sports.FOOTBALL
{
}
public void method(parameter(s)) //call this method when Enum is Sports.HOCKEY
{
}
Run Code Online (Sandbox Code Playgroud)
这两种方法都是同一个类的一部分。我正在寻找任何情况的解决方案(当方法具有相同名称或不同名称时)。
方法签名需要不同的类型,以便编译器能够区分它们。
但是:您的枚举类型是Sports。Sports.Football或者Sports.Hockey只是该类型的实例;或多或少类似于“1”和“2”是 String 类型的实例。
因此:不同的枚举常量不可能重载。
您可以实现的“最好”是switch()遍历您的枚举实例,然后相应地“调度”,或者如评论中所述:一个可以将map不同的枚举常量映射到某种“可执行代码块”的映射。
| 归档时间: |
|
| 查看次数: |
928 次 |
| 最近记录: |