Java 枚举与枚举的区别

Java 枚举与枚举的区别,java,oop,interface,enumeration,Java,Oop,Interface,Enumeration,enum数据类型和Enumeration接口之间是否有任何区别。我对这两者感到困惑 我得到的答案是它们没有关联,但这又引出了另一个问题 我们不能实例化接口。那么这条线的意义是什么呢 Enumeration days = dayNames.elements(); 这是包含该行的完整代码 import java.util.Vector; import java.util.Enumeration; public class EnumerationTester { public static

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

我得到的答案是它们没有关联,但这又引出了另一个问题

我们不能实例化接口。那么这条线的意义是什么呢

Enumeration days = dayNames.elements();
这是包含该行的完整代码

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()); 
      }
   }
}
根据神谕

枚举类型是一种特殊的数据类型,它使变量成为一组预定义的常量。变量必须等于为其预定义的值之一。常见的示例包括指南针方向(北、南、东和西的值)和一周中的几天

枚举示例

public class EnumTest {
    Day day;

    public EnumTest(Day day) {
        this.day = day;
    }

    public void tellItLikeItIs() {
        switch (day) {
            case MONDAY:
                System.out.println("Mondays are bad.");
                break;

            case FRIDAY:
                System.out.println("Fridays are better.");
                break;

            case SATURDAY: case SUNDAY:
                System.out.println("Weekends are best.");
                break;

            default:
                System.out.println("Midweek days are so-so.");
                break;
        }
    }

    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MONDAY);
        firstDay.tellItLikeItIs();
        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
        thirdDay.tellItLikeItIs();
        EnumTest fifthDay = new EnumTest(Day.FRIDAY);
        fifthDay.tellItLikeItIs();
        EnumTest sixthDay = new EnumTest(Day.SATURDAY);
        sixthDay.tellItLikeItIs();
        EnumTest seventhDay = new EnumTest(Day.SUNDAY);
        seventhDay.tellItLikeItIs();
    }
}
输出为:

Mondays are bad.
Midweek days are so-so.
Fridays are better.
Weekends are best.
Weekends are best.
枚举

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()); 
      }
   }
}
枚举接口定义了可以枚举(一次获取一个)对象集合中元素的方法

枚举示例

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()); 
      }
   }
}
输出

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday

简而言之,
枚举
是传统的
迭代器
枚举
是一种数据类型。

:实现
枚举
接口的对象一次生成一系列元素。对
nextElement
方法的连续调用返回序列的连续元素

例如,要打印向量v的所有元素,请执行以下操作:

for (Enumeration<E> e = v.elements(); e.hasMoreElements();)
       System.out.println(e.nextElement());
你的第二个问题:

Mondays are bad.
Midweek days are so-so.
Fridays are better.
Weekends are best.
Weekends are best.
我们不能实例化接口。那么这有什么意义呢 线

dayNames
是一个
向量
,一个类似于
列表
的集合。(有分歧,但这超出了问题的范围。)。但是,当调用
daynames.elements()
时,它返回向量
daynames
组件的枚举。返回的枚举对象将生成添加到此向量的所有项。生成的第一个项目是索引0处的项目,然后是索引1处的项目,依此类推

枚举是java中的实例控制类。您可以预定义一种类型可以支持的不同口味。例如

public enum Direction {
    EAST, WEST, NORTH, SOUTH
} 
定义名为Direction的类型,该类型可以是4种类型。不允许从类型定义之外实例化这些类型。您可以查看有关枚举的更多信息

而枚举是遍历集合的旧方法。它有两个方法nextElement和hasMoreElements,它们更像迭代器接口的next和hasNext方法。在像Servlet这样的旧API中,我们仍然可以看到一些返回枚举的方法。例如

Java.util.Enumeration paramNames=request.getParameterNames();

它们与“人”和“海牛”差不多
enum
是一种语法糖,允许使用有意义的常量
Enumeration
是一个提供遍历集合的方法的类。@Amadan是一个枚举类或接口。@chetanmehta Enumeration是一个接口,两者之间没有任何关系。@chetanmehta我已更新帖子以回答您的第二个问题。但在将来,试着发布一个新问题,而不是编辑,这样每个人都能看到它。除了它是一个遗留类之外,使用枚举不是一个好主意,因为它使用Vector:stackoverflow.com/a/16747860/2695414这是我的另一个困惑。枚举是一个接口,那么我们怎么能拥有该数据类型的天数。@chetanmehta哪种数据类型?不是指数据类型。我的意思是days如何存储枚举引用类型的数据。@chetanmehta告诉我您从示例中了解了什么?您刚刚创建了一个用于存储数据的向量对象。然后,您希望使用枚举接口遍历数据。枚举是许多util类(如vector implement)实现的接口。问题是,我们为什么会有一个像days这样存储接口实例的对象
Java.util.Enumeration<String> paramNames = request.getParameterNames();