0

我的列表中有一个可以具有严重性级别的项目(这些级别是:信息,警告,错误,延迟,...)

我想以 OOP 方式对此进行编程,以便在需要时可以轻松添加更多严重级别。自从我使用 Java 以来已经有一段时间了,所以我不确定如何以正确的方式进行操作。

我所拥有的是:

    Public class ListItem
    {
       int sev; 
       String name;
       public ListItem(String name, int s)
       {
          this.name = name; this.sev = s;
       }
       ...
    }

严重性应该有一个整数(如“1”)和一个名称(如“信息”)

我想“预定义”严重性,例如:

public static final int WARNING = 1;
public static final int ERROR = 2;

但是,当“1”被指定为列表项的严重性时,如何显示名称“警告”?我有最好的方法吗?

谢谢,

4

4 回答 4

3

您应该使用枚举而不是常量:

enum Level {
   INFO, WARNING, ERROR;
}

您可以打印Level使用toString()

Level level = Level.INFO;
System.out.println(level.toString());

印刷

INFO

更改为ListItem(String name, Level level)的优点是可以防止您使用未定义为有效级别ListItem的值创建 a。int

于 2012-07-25T09:46:30.623 回答
0

如果你使用ints 作为你的常量,你实际上会丢失任何类型信息,因此类型安全。这就是为什么最好使用“类型安全枚举”,特别是 Java enum。每个enum成员都是一个成熟的对象,因此您可以向其添加任何方法。

于 2012-07-25T09:47:43.583 回答
0

1. enum将非常适合您的需要。

2.这里value of the variable只是枚举列表中指定值之一。因此,您将确认仅传递了有效值。

例如:

public enum Level{

    WARNING, ERROR;

}
于 2012-07-25T09:51:23.787 回答
0

这实际上取决于您希望如何将系统扩展到未来。如果您介意修改代码,enum's 非常适合该任务。

但是,如果您想通过引入它们来添加新的关卡(无需修改原始代码),您最好创建一个接口或类来提供您需要的基本功能。

显然,您需要实施Comparable以使您的生活更轻松

于 2012-07-25T10:00:30.703 回答