枚举类型实现接口(枚举 接口)

网友投稿 538 2023-01-05


本篇文章给大家谈谈枚举类型实现接口,以及枚举 接口对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享枚举类型实现接口的知识,其中也会对枚举 接口进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

C#枚举器的实现接口

实现 IEnumerator 接口
注意到ListBoxEnumerator不仅需要实现IEnumerator接口枚举类型实现接口,对于ListBox类它也需要一些特别了解枚举类型实现接口;特别是枚举类型实现接口,它必须可以获得ListBox的字符串数组并且遍历其所包含的字符串。IEnumerable 类和与其相关的 IEnumerator类之间的关系有一点微妙。实现IEnumerator接口的最好办法是在IEnumerable类里创建一个嵌套的IEnumerator类。
public class ListBox : IEnumerable
{
// 嵌套的私有ListBoxEnumerator类实现
private class ListBoxEnumerator : IEnumerator
{
// 代码实现...
}
// ListBox类的代码...
}
注意ListBoxEnumerator需要对它所嵌入的ListBox类的一个引用。你可以通过ListBoxEnumerator的构造函数来传递。
为了实现IEnumerator接口,ListBoxEnumerator需要两个方法枚举类型实现接口:MoveNext和Reset,还有一个属性:Current。这些方法和属性的任务是创建一个状态机制,确保你可以在任何时候得知ListBox中的哪个元素是当前元素,并获得那个元素。
在这个例子中,这种状态机制是通过维护一个标明当前string的索引值来完成的,并且,你可以通过对外部类的string集合进行索引来返回这个当前的string。为了达到这个目标,你需要一个成员变量保存对于外部ListBox对象的引用,以及一个整型用于保存当前索引。
private ListBox lbt;
private int index;
每次Reset方法被调用的时候,index被置为 -1。
public void Reset()
{
index = -1;
}
每次MoveNext被调用的时候,外部类的数组检查时候已经到了末尾,如果是这样,方法返回false。如果集合中还有对象,index将增加,并且方法返回true。
public bool MoveNext()
{
index++;
if (index = lbt.strings.Length)
{
return false;
}else
{
return true;
}
}
最后,如果MoveNext方法返回True,foreach循环将调用Current属性。ListBoxEnumerator的Current属性的实现是索引外部类(ListBox)中的集合,并且返回找到的对象(这个例子中,是一个字符串)。注意,返回一个Object是因为IEnumerator接口中Current属性的签名如此。
public object Current
{
get {
return(lbt[index]);
}
}
在1.1中,所有想要通过foreach循环来迭代的类都需要实现IEnumerable接口,于是,必须创建一个实现了IEnumerator的类。最糟的是,enumerator返回的值并不是类型安全的。记得Current属性返回一个Object对象枚举类型实现接口;它仅仅简单的假设你所返回的值与foreach循环所期望的相符合。

枚举能继承类或接口吗

1 枚举的定义 :一个特殊的java类,对象的某个属性的值不能是任意的,必须为固定的一组取值其中的某一个
接口的定义:定义对象的扩展功能,是在继承之外还需这个对象具备的一些功能
2 上面的定义中说明了枚举是一个特俗的java类,既然是一个java类,那么就可以继承接口。
3 下面的用java代码来展示枚举继承接口的方式 :
//定义一个枚举:
public enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES }
public interfacel SuitImp{}//接口
//枚举实现接口的代码
public enum Suit implements SuitImp()

C# 枚举器和可枚举类型

在C#中能够使用foreach语句遍历数组和List等对象的原因就在于这些对象是可枚举类型,这些可枚举类型能够获取枚举器,而枚举器能够自动获取对象中的每一个元素。

什么是可枚举类型?
实现了IEnumerable中的GetEnumerator方法的类型就是可枚举类型,从方法名字中就可以知道,用于获取枚举器,枚举器包含集合中的元素信息。

什么是枚举器?
实现了IEnumerator接口就是枚举器,可以依次返回集合中的元素,该接口有一个属性和两个方法:
Current ,这是一个只读的object类型属性,可以返回任何类型,用于获取集合中的当前元素。
MoveNext ,这是一个方法,用于将枚举数推进到集合的下一个元素,如果已是最后一项则返回false。
Reset ,这是一个方法,将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。

如果自定义类实现了可枚举类型接口和枚举器接口,便可以使用foreach语句进行遍历了。
实现可枚举类型

实现枚举器

使用foreach语句进行遍历

以上使用的枚举类型接口和枚举器接口都是非泛型版本,在C#使用较多的是泛型版本的IEnumerable<T和IEnumerator<T,使用方法差不多,但有一些区别。

Java语言中的枚举类型如何使用?

Java语言中枚举类型实现接口的枚举类型枚举类型实现接口的使用方法如下:

用法一:常量枚举类型实现接口

public enum Color {  
  RED, GREEN, BLANK, YELLOW  
}

用法二:switch;

 enum Signal {
        GREEN, YELLOW, RED
    }
    public class TrafficLight {
        Signal color = Signal.RED;
        public void change() {
            switch (color) {
            case RED:
                color = Signal.GREEN;
                break;
            case YELLOW:
                color = Signal.RED;
                break;
            case GREEN:
                color = Signal.YELLOW;
                break;
            }
        }
    }

用法三:向枚举中添加新方法;

public enum Color {
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
        // 成员变量
        private String name;
        private int index;
        // 构造方法
        private Color(String name, int index) {
            this.name = name;
            this.index = index;
        }
        // 普通方法
        public static String getName(int index) {
            for (Color c : Color.values()) {
                if (c.getIndex() == index) {
                    return c.name;
                }
            }
            return null;
        }
        // get set 方法
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getIndex() {
            return index;
        }
        public void setIndex(int index) {
            this.index = index;
        }
    }

用法四:覆盖枚举的方法;

public class Test {
    public enum Color {
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
        // 成员变量
        private String name;
        private int index;
        // 构造方法
        private Color(String name, int index) {
            this.name = name;
            this.index = index;
        }
        // 覆盖方法
        @Override
        public String toString() {
            return this.index + "_" + this.name;
        }
    }
    public static void main(String[] args) {
        System.out.println(Color.RED.toString());
    }
}

用法五:实现接口;

public interface Behaviour {
        void print();
        String getInfo();
    }
    public enum Color implements Behaviour {
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
        // 成员变量
        private String name;
        private int index;
        // 构造方法
        private Color(String name, int index) {
            this.name = name;
            this.index = index;
        }
        // 接口方法
        @Override
        public String getInfo() {
            return this.name;
        }
        // 接口方法
        @Override
        public void print() {
            System.out.println(this.index + ":" + this.name);
        }
    }

用法六:使用接口组织枚举。

public interface Food {
    enum Coffee implements Food {
      BLACK_COFFEE, DECAF_COFFEE, LATTE, CAPPUCCINO
   }
  enum Dessert implements Food {
      FRUIT, CAKE, GELATO
  }
}

以上就是Java语言中枚举类型的基本使用方法。

java枚举类型enum用法

用法如下:

用法一:常量      在JDK1.5 之前枚举类型实现接口,我们定义常量都是: public static fianl.... 。现在好枚举类型实现接口枚举类型实现接口,有了枚举枚举类型实现接口,可以把相关枚举类型实现接口的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法

用法二:switch   JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

用法三:向枚举中添加新方法   如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。

用法四:覆盖枚举的方法   所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。 枚举类型都继承Enum

package com.it.exenum;

用法五:实现接口    public interface Food {
enum Coffee implements Food{
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO

用法六:使用接口组织枚举

用法七:关于枚举集合的使用

c# 枚举接口

又见楼主,好执着啊,跟我一样 哈哈
我再解释一下吧,他们两个的区别就是一个实现了IEnumerable接口一个没有实现,但是都有一个叫GetEnumerator的方法。foreach不管你有没有实现IEnumerable接口,他指认有没有一个叫GetEnumerator的方法并是否返回了IEnumerator。在编译阶段进行检查,如果没有这个方法你的程序是不会编译通过的。编译后的程序是直接调用GetEnumerator这个方法得到IEnumerator进行调用,大概就是这样,具体实现就要去问微软了。 关于枚举类型实现接口和枚举 接口的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 枚举类型实现接口的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于枚举 接口、枚举类型实现接口的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:设备接口自动化框架(接口自动化实现)
下一篇:存储器系统接口设计(存储接口技术)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~