泛型和枚举

泛型:

用于解决安全问题,是一个安全机制.

泛型格式;通过<>定义操作的引用数据类型。

使用:当类中要操作的引用数据类型不确定的时候,早起定义Object来完成扩展,现在定义泛型类来扩展。 泛型类定义的泛型,在整个类中有效,如果被方法是用,那么泛型类对象的明确要操作的具体类型。所有方法类型不确定,那么可以将泛型定义在方法上。

public <T> T  print(T t){//<T>定义泛型     T返回类型

  return t;

}

静态泛型方法:

1、静态方法不可以访问类上定义的泛型。

2、如果静态方法操作的引用数据类型不确定,可以将泛型定义在方法上。

public static <T> void menthods(T t){

}

泛型限定:

public static void print(ArrayList<? extends Person> aa){

<?>通配符

<?   extends(继承)   object(类的上限)> 

<?  super  Student(类的下限)>

枚举:

关键字:enum

语法定义: 创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式 Class Enum<E extends Enum<E>>,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。

public enum Meiju {

  Yellow("黄色",1),blue("蓝色",2),red("红色",3);

  private String name;

  private int index;

private Meiju(String name,int index){

  this.name=name;

  this.index=index;

}

public void setName(String name){

  this.name=name;

}

public String getName(){

  return name;

}

public void setNum(int index){

  this.index=index;

}

public int getNum(){

  return index;

}

}

public class MeijuTest {

public static void main(String[] args) {

// System.out.println(Meiju.blue.getName());

  for(Meiju c:Meiju.values()){

  System.out.println(c+"  颜色为:"+c.getName()+"      序列为:"+c.getNum());

}

运行结果:

Yellow  颜色为:黄色      序列为:1

blue  颜色为:蓝色      序列为:2

red  颜色为:红色      序列为:3

  EnumSet<Meiju> es=EnumSet.allOf(Meiju.class);

  System.out.println(es);

运行结果:

[Yellow, blue, red]

//EnumSet

EnumSet<EnumTest> weekSet = EnumSet.allOf(EnumTest.class);

  for (EnumTest day : weekSet) {

  System.out.println(day); }

//EnumMap

EnumMap<Meiju,String> map=new EnumMap<Meiju,String>(Meiju.class);

  map.put(Meiju.blue, "lan");

  map.put(Meiju.red, "hong");

  map.put(Meiju.Yellow, "huang");

  Set<Meiju> set=map.keySet();

  Iterator<Meiju> it=set.iterator();

while(it.hasNext()){

  Meiju key=it.next();

  System.out.println(key+"  "+map.get(key));

}

}}

运行结果:

Yellow  huang

blue  lan

red  hong

总结:

  enum 的语法结构尽管和 class 的语法不一样,但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum<E>。所以,实际上 enum 就是一个 class,只不过 java 编译器帮我们做了语法的解析和编译而已。
  简单讲: 可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)。
时间: 2024-10-13 22:25:14

泛型和枚举的相关文章

java JDK8 学习笔记——第18章 自定义泛型、枚举与注释

第十八章 自定义泛型.枚举与注释 18.1 自定义泛型 泛型定义: (1)仅定义在方法上的泛型语法 (2)用来限制泛型可用类型的extends与super关键字(3)?类型通配字符的使用 18.1.1 使用extends与? 1.若extends之后指定了类与接口,想再指定其他接口,可以使用&连接. 2.如果B是A的子类,而Node< B>可视为一种Node< A>,则称Node具有共变性或有弹性的.Java泛型不具有共变性,可以使用类型通配字符?与extends来声明变量

JAVA学习-Java新特性(泛型、枚举、Annotation)

所谓的Java新特性现在都是指从JDK 1.5之后开始的,例如,在前面已经学习过两个新特性:switch支持String判断(JDK 1.7提供的).自动装箱和拆箱.可变参数.foreach.静态导入.泛型.枚举.Annotation. 对于所有的新特性,我的个人建议:有些新特性你今天一定是不知道怎么用的,我们今天只是来看一下这些语法,至于使用方面,慢慢来观察. 1.可变参数(理解) 如果说现在有这样一个要求,要求实现整数的加法操作,并且方法可以接收任意多个整型数据一起实现加法操作. 如果按照传

13. 泛型和枚举

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption

W6-junit、泛型、枚举、增强for、可变参数、反射[JavaWeb]

1.单元测试Junit 1.1 测试对象是一个类中的方法 1.2 junit不是javase的部分,使用时需要导入jar包,myeclipse自带jar包   1.3 单元测试方法的时候,方法命名规则 public void 方法名(){} 1.4 使用注解方式运行,在方法的上面@Test package cn.itcast.test02; import org.junit.Test; public class testDemo { //测试方法 @Test public void testAd

枚举和泛型

1.枚举类型 JDK1.5中新增了枚举类型与泛型. 枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中,此外,它还提供了安全检查功能. 枚举类型本质上还是以类的形式存在. enum是定义枚举类型的关键字. 例如:在项目中创建Constants接口,在接口中定义敞亮的常规方式: public interface Constants{ public static final int Constants_A=1; public static final int Constants_B=12;

java.基础、集合、枚举、泛型、

1.myeclipse的安装和使用 * eclipse:是一个免费的开发工具 * myeclipse:是一个收费的插件,破解myeclipse, ** 安装目录的要求: 不能有中文和空格 ** 安装完成之后,选择一个工作空间 ,这个工作空间不能有中文和空格 * 破解myeclipse ** 运行run.bat文件,但是运行之前,必须要安装jdk,通过配置环境变量 * myeclipse的使用 * 创建一个工程 - 类型 java project web project - 选择依赖的jdk,可以

第17章 枚举类型与泛型

1.枚举类型 JDK1.5中新增了枚举类型与泛型. 枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中,此外,它还提供了安全检查功能. 枚举类型本质上还是以类的形式存在. enum是定义枚举类型的关键字. 例如:在项目中创建Constants接口,在接口中定义敞亮的常规方式: public interface Constants{ public static final int Constants_A=1; public static final int Constants_B=12;

优秀的 Android 开源项目

摘要  转载http://www.trinea.cn/android/android-open-source-projects-view/,方便大家找到自己合适的资料 目录[-] 一.ListView 二.ActionBar 三.Menu 四.ViewPager .Gallery 五.GridView 六.ImageView 七.ProgressBar 八.其他 GitHub上优秀Android开源项目 3. Android开发神器 1.Xabber客户端 2.oschina客户端 3.手机安全

尚学堂_java300集笔记_手写服务器

195.httpserver_准备_Socket入门 public class Server { private ServerSocket server; public static void main(String[] args) { Server server = new Server(); server.start(); } public void start() { try { server = new ServerSocket(8080); String msg = null; thi