java扫盲 接口 Enumeration
摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢!
记起2年前,高中生活最多的是老师的批评。谢谢! -泥沙砖瓦浆木匠
一.初识Enumeration
当我写网络编程的时候,我发现了这个接口。很神奇的是以前都没用过,NetworkInterface.getNetworkInterfaces()返回的是Enumeration载体这NetworkInterface对象。Enumeration是java.util中的一个接口类,在Enumeration中封装了有关枚举数据集合的方法。Enumeration接口本身不是一个数据结构。但是,对其他数据结构非常重要。 Enumeration接口定义了从一个数据结构得到连续数据的手段。
注意:此接口的功能与 Iterator 接口的功能是重复的。此外,Iterator 接口添加了一个可选的移除操作,并使用较短的方法名。新的实现应该优先考虑使用 Iterator 接口而不是 Enumeration 接口。
二.功能的使用
java.util Enumeration<E>
通常用 Enumeration 中的以下两个方法打印向量中的所有元素:
(1) boolean hasMoreElements()
测试此枚举是否包含更多的元素。
(2) E nextElement()
如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。
用法一:
vec 是接口实现类 Vector( 集合 ) 的对象, vec.elements() 获得 Vector( 集合 ) 的一个元素。
for(Enumeration e = vec.elements(); e.hasMoreElements();)
{
System.out.println(e.nextElement());
}
用法二:
e is an object that implements the Enumeration interface
while (e.hasMoreElements()) {
Object o= e.nextElement();
System.out.println(o);
}
下面举个例子:
public class TestEnumeration{
public static void main(String[] args){
Vector v = new Vector();
v.addElement("Li");
v.addElement("YYY");
v.addElement("Brown");
Enumeration e = v.elements();
while(e.hasMoreElements()){
String value = (String)e.nextElement();
System.out.println(value);
}
}
}
你可以看到以下输出
Li
YYY
Brown
三.演示Enumeration接口的使用
下面我们就实现这个接口来完成一个小功能:
MyDataStruct类用于实例化一个简单的、可以提供enumeration对象,给使用程序的数据结果对象
class MyDataStruct
{
String[] data; // 构造器
MyDataStruct()
{
data = new String[4];
data[0] = "zero";
data[1] = "one";
data[2] = "two";
data[3] = "three";
} // 返回一个enumeration对象给使用程序
Enumeration getEnum()
{
return new MyEnumeration(0, data.length, data);
}
}
MyEnumeration类实现Enumeration接口
class MyEnumeration implements Enumeration
{
int count; // 计数器
int length; // 存储的数组的长度
Object[] dataArray; // 存储数据数组的引用 // 构造器
MyEnumeration(int count, int length, Object[] dataArray)
{
this.count = count;
this.length = length;
this.dataArray = dataArray;
} public boolean hasMoreElements()
{
return (count < length);
} public Object nextElement() {
return dataArray[count++];
}
}
测试类 MainClass
class MainClass
{
public static void main(String[] args)
{
// 实例化MyDataStruct类型的对象
MyDataStruct mySataStruct = new MyDataStruct();
// 得到描述myDataStruct类型对象的enumeration对象
Enumeration myEnumeration = mySataStruct.getEnum();
// 使用对象循环显示myDataStruct类型的对象中的每一个元素
while (myEnumeration.hasMoreElements())
System.out.println(myEnumeration.nextElement());
}
}
你可以看到下面输出:
zero
one
two
three
四.感谢知识来源和小结
来自:java基础
书法是人艺术和美的产物

java扫盲 接口 Enumeration的更多相关文章
- 深入理解Java的接口和抽象类(转)
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...
- 深入理解Java的接口和抽象类
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...
- java微信接口之五—消息分组群发
一.微信消息分组群发接口简介 1.请求:该请求是使用post提交地址为: https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_t ...
- java微信接口之四—上传素材
一.微信上传素材接口简介 1.请求:该请求是使用post提交地址为: https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=A ...
- android 学习随笔二十七(JNI:Java Native Interface,JAVA原生接口 )
JNI(Java Native Interface,JAVA原生接口) 使用JNI可以使Java代码和其他语言写的代码(如C/C++代码)进行交互. 问:为什么要进行交互? 首先,Java语言提供的类 ...
- [转载]深入理解JAVA的接口和抽象类
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...
- Java序列化接口的作用总结
一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做”持久化”. 把堆内存中的对象的生命周期延长,存入硬盘,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从硬盘中读取就可以了. ...
- 深入理解Java的接口和抽象类 _摘抄
http://www.cnblogs.com/dolphin0520/p/3811437.html 原文 深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可 ...
- JAVA 函数式接口与c#委托对应关系(一)
C# Action委托 VS JAVA Action 接口函数 1.c#:Action 封装一个方法,该方法不具有参数并且不返回值. 构造实体类类 using System; namespace Ac ...
随机推荐
- mysql时间戳转换
数据表中time是时间戳格式,转化成正常的时间格式 SELECT id,TIME,FROM_UNIXTIME(TIME,'%Y-%m-%d %H:%m:%S'),incline_id FROM inc ...
- Flink 报错 "Could not find a suitable table factory for 'org.apache.flink.table.factories.StreamTableSourceFactory' in the classpath"
先上代码: table = tablexx.select('*).tablexx.groupBy('x).select('x, xx.count ) tableEnvironment // decla ...
- oracle创建新用户和用户表空间
.首先,创建(新)用户: create user username identified by password; username:新用户名的用户名 password: 新用户的密码 也可以不创建新 ...
- SSM+MyBatis框架详解
- poj 3687 Labeling Balls(拓补排序)
Description Windy has N balls of distinct weights from 1 unit to N units. Now he tries to label them ...
- python_flask项目(BBS)_01
项目文件用途说明: config.py , 此文件主要存储一些配置信息,如数据库连接串.debug模式串等. exts.py , 此文件装载第三方库实例对象,如sqlalchemy ...
- OC协议、代理的简单使用
在不同类之间传递数据,我所学到的有三种,1.代理,2.block,3.通知.在这里,我们先来讲一下代理的使用,后面我会继续讲到block和通知.代理通常和协议是一起使用的,协议通常写在代理类里面,被代 ...
- 如何封装使用api形式调用的vue组件
在实际开发中一般有两种封装vue组件的方法:一种就是常用的的通过props父组件传值给子组件的方法: 子组件 父组件: 还有一种就是通过调用api的形式,下面例子是本人在实际项目中封装的一个自定义图标 ...
- java持有对象-集合类
面阿里的时候,面试就让我说一下集合 当时由于条件原因没听清面试官的问题,后来面试后,面试官让问他问题的时候,才说明白是什么 下面就接受一下我了解的集合类 集合类中大致可以分为两个体系 一.collec ...
- Jenkins的初级应用(2)-Invoke Phing targets
Invoke Phing targets这个插件主要是读取xml形式包括自动化测试打包部署的配置文件,然后根据流程走下来.用phing命令读取并执行xml配置文件,然后执行定义的步骤.比如check. ...