[英]Difference between enum and Enumeration
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());
}
}
}
枚举是一个接口 :实现Enumeration
接口的对象生成一系列元素,一次一个。 对nextElement
方法的连续调用返回该系列的连续元素。
例如,要打印Vector<E> v
所有元素:
for (Enumeration<E> e = v.elements(); e.hasMoreElements();)
System.out.println(e.nextElement());
枚举是一种数据类型 :枚举类型是一种特殊的数据类型,它使变量成为一组预定义的常量。 变量必须等于为其预定义的值之一。
例如,您可以将星期几的enum
类型指定为:
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
public static void main(String[] args)
{
System.out.ptintln(Day.SUNDAY); // print SUNDAY
}
你的第二个问题:
我们无法实例化接口。 那么这条线的意义何在?
Enumeration days = dayNames.elements();
dayNames
是一个Vector
,就像List
一样。 (存在差异,但这超出了问题的范围。)。 但是,当daynames.elements()
时,它返回向量daynames
的组件的枚举。 返回的Enumeration对象将生成添加到此向量的所有项。 生成的第一个项目是index 0
处的项目,然后是index 1
处的项目,依此类推。
简而言之, Enumeration
是遗留Iterator
, Enum
是数据类型。
are instance controlled classes in java. 是java中的实例控制类。 您可以预定义不同的口味,一种类型可以支持。 对于前者
public enum Direction {
EAST, WEST, NORTH, SOUTH
}
which can be of 4 types. 定义一个名为的类型,它可以是4种类型。 不允许从类型定义之外实例化这些类型。 here . 你可以在这里查看关于更多信息 。
was the old way to iterate through a collection. 虽然是迭代集合的旧方法。 and which are more like and methods of interface. 它有两个方法和更像是和方法的接口。 we can still see some methods which return . 在像这样的旧API中,我们仍然可以看到一些返回方法。 对于前者
Java.util.Enumeration<String> paramNames = request.getParameterNames();
根据oracle 文档
枚举类型是一种特殊的数据类型,它使变量成为一组预定义的常量。 变量必须等于为其预定义的值之一。 常见示例包括罗盘方向(NORTH,SOUTH,EAST和WEST的值)和星期几。
枚举的例子
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.
列举
Enumeration接口定义了可以枚举(一次获取一个)对象集合中的元素的方法。
枚举的例子
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.