枚举和枚举之间的区别

che*_*hta 14 java oop enumeration interface

enum数据类型和Enumeration接口之间是否有任何区别.我在两者之间感到困惑.

我得到了他的答案,他们没有关系,但这带来了另一个问题.

我们无法实例化接口.那么这条线的意义何在?

Enumeration days = dayNames.elements();
Run Code Online (Sandbox Code Playgroud)

下面是包含该行的完整代码

import java.util.Vector;
import java.util.Enumeration;

public class EnumerationTester {

   public static void main(String args[]) {
      Enumeration days;
      Vector dayNames = new Vector();
      dayNames.add("Sunday");
      dayNames.add("Monday");
      dayNames.add("Tuesday");
      dayNames.add("Wednesday");
      dayNames.add("Thursday");
      dayNames.add("Friday");
      dayNames.add("Saturday");
      days = dayNames.elements();
      while (days.hasMoreElements()){
         System.out.println(days.nextElement()); 
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

Sag*_*age 21

枚举是一个接口:实现接口的对象Enumeration生成一系列元素,一次一个.对该nextElement方法的连续调用返回该系列的连续元素.

例如,要打印a的所有元素Vector<E> v:

for (Enumeration<E> e = v.elements(); e.hasMoreElements();)
       System.out.println(e.nextElement());
Run Code Online (Sandbox Code Playgroud)

枚举是一种数据类型:枚举类型是一种特殊的数据类型,它使变量成为一组预定义的常量.变量必须等于为其预定义的值之一.

例如,您可以将星期几enum类型指定为:

 public enum Day {
        SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
        THURSDAY, FRIDAY, SATURDAY 
    }

   public static void main(String[] args)
  {
     System.out.ptintln(Day.SUNDAY);  // print SUNDAY
  }
Run Code Online (Sandbox Code Playgroud)

你的第二个问题:

我们无法实例化接口.那么这条线的意义何在?

Enumeration days = dayNames.elements();
Run Code Online (Sandbox Code Playgroud)

dayNames是一个Vector,像一个集合List.(存在差异,但这超出了问题的范围.).但是,当daynames.elements()调用它时,它返回vector的组件的枚举daynames.返回的Enumeration对象将生成添加到此向量的所有项.生成的第一个项目是项目index 0,然后是项目index 1,等等.

  • @chetanmehta我已经更新了帖子以回答你的第二个问题.但是在将来尝试发布一个新问题而不是编辑,这样每个人都可以看到它. (2认同)

Adm*_*mit 15

简而言之,Enumeration是遗留的Iterator,Enum是一种数据类型.