枚举:

语法: 
public enum 枚举名 { 枚举值表(罗列所有值) }
 例如: 
public enum EnumTest{MON,TUE,WED.THU,FRI,SAT,SUN}
枚举操作 ---取值
  1. 使用“枚举.variable“的形式取出枚举中的指定内容
  EnumTest e = EunmTest.MON  // 取出星期1
 2 ,  使用“枚举.values()”的形式,将全部的枚举类型变为对象数组的形式
for(EnumTest e : EnumTest.values()){
System.out.println(e);
}
Enum特点:
Enum 中的每一个枚举值都是一个对象。 遍历出来之后是一个对象数组。
1、 枚举的直接父类是java.lang.Enum, 但是不能显示的继承Enum , 且其子类也不能
被继承。
2、 枚举就相当于一个类, 可以定义构造方法、 成员变量、 普通方法和抽象方法 。
3、 默认私有的构造方法, 即使不写访问权限也是private。
4、 每个实例分别用于一个全局常量表示, 枚举类型的实例个数有限的、 固定的,
不能使用new关键字。
5、 枚举实例必须位于枚举中最开始部分, 每个实例间以逗号进行分割, 枚举实例
列表的后面要有分号与其他成员相分隔。
 
 

泛型:

泛型是JDK5.0的新特性, 所谓的泛型就是参数化类型, 即在定义类
时不指定类中属性的具体类型, 而由外部在声明及实例化对象时
指定具体的类型。 这种类型参数可以用在类、 接口和方法的创建
中, 分别为泛型类、 泛型接口、 泛型方法。 JAVA语言引入泛型的
好处是更安全简单。
泛型类语法结构:
class class-name <type-param-list>{//....}
实例化泛型类的语法结构:
class-name<type-param-list> obj = new class-name<type-param-list>(con-arg-list)
泛型接口语法结构: 
interface interface-name <type-param-list>{//....}
实现泛型接口的语法结构:
class class-name<type-param-list> implements interface-name<type-param-list>{}
泛型方法语法结构: 
public <T> T genericMethodTest(T ts){
T t = ts;
return t;
}
实现泛型方法结构:
new GenericMethod().genericMethodTest(11);
 
泛型类定义; 
使用泛型类进行类型占位。
public class GenericClass<T,K> {
private T t;
public K k;
public T getT() {
return t;
}p
ublic void setT(T t) {
this.t = t;
}
}
泛型接口实例:
泛型接口结构:
public interface GenericInterface<T>{
    public T test(T t);
}
实现泛型接口结构:
public class Ginterimp<T>implements Genericinterface<T>{
     @Override
public T test(T t) {
// TODO Auto-generated method stub
return null;
}
}
泛型方法结构: 
public <T> GenericMethodTest(T ts){
  T t= ts;
  return t;
}
实现泛型方法结构: 
new GenericMethod().genericMethodTest(11);
类型通配符: 
类型通配符一般是使用? 代替具体的类型实参,表示可以接受此类型的任意泛型对象。
 
类型通配符----->上限
为了能够对类型参数做进一步的限制,比如只能是Number类及其子类,此时就需要用到类型通配符上限来解决, 其格式为: 
类名称< ? extends 类> 对象名称
例如:
//接收GenericClass对象, 范围上限设置为Number, 所以只能接收数字类型
public static void fun(GenericClass< ? extends Number> temp){
System.out.println(“数字是: ”+temp);
 }
 
类型通配符----->下限
当使用的泛型只能在本类及其父类类型上应用时,就必须使用泛型的范围下限进行配置, 其格式为: 
类名称< ? super 类> 对象名称
例如: 
//只能接收String或Object类型的泛型
public static void fun(GenericClass<? super String> temp){
System.out.println(“内容”+temp);
}
 
泛型擦除; 
Java中的泛型这一概念提出的目的,导致其只是作用于代码编译阶段,在编译过程中,对于正确检验泛型结果后,会将泛型的相关信息擦除,也就是说,成功编译过后的class文件中是不包含任何泛型信息的。泛型信息不会进入到运行时阶段。
 

JAVA 高级特性枚举和泛型的更多相关文章

  1. java高级特性增强

    第4天 java高级特性增强 今天内容安排: 1.掌握多线程 2.掌握并发包下的队列 3.了解JMS 4.掌握JVM技术 5.掌握反射和动态代理 java多线程增强 .1. java多线程基本知识 . ...

  2. paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型

    paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...

  3. Java高级特性-String、StringBuffer和StringBuilder

    Java高级特性-String.StringBuffer和StringBuilder String Java语言中的字符串值都属于String类,虽然有其他方法表示字符串(如字符串数组),但Java一 ...

  4. Java高级特性——反射机制(第二篇)

    在Java高级特性——反射机制(第一篇)中,写了很多反射的实例,可能对于Class的了解还是有点迷糊,那么我们试着从内存角度去分析一下. Java内存 从上图可以看出,Java将内存分为堆.栈.方法区 ...

  5. Java高级特性1_流库_初体验

    Java高级特性流库_初体验 面对结果编程 在编程里, 有两种编程方式, 一种是面对过程编程, 一种是面对结果编程. 两者区别如下 面向过程编程 面向过程编程需要编程程序让程序依次执行得到自己想要的结 ...

  6. Java高级特性之泛型

    首先我们先提出两个问题: 什么是泛型? 为什么要使用泛型?我们先来看看第一个问题什么是泛型.如果你对Java三大特性中的多态性理解的比较透彻的话,泛型就比较好理解了.多态性表示一个对象具备多种状态.比 ...

  7. java高级特性(4)--枚举

    枚举(enum),是指一个经过排序的.被打包成一个单一实体的项列表.一个枚举的实例可以使用枚举项列表中任意单一项的值.枚举在各个语言当中都有着广泛的应用,通常用来表示诸如颜色.方式.类别.状态等等数目 ...

  8. 云端卫士实战录 | Java高级特性之多线程

    <实战录>导语 一转眼作为一名Java开发者已经四年多时间了,说长不长说短不短,对于java的感情还是比较深的,主要嘛毕竟它给了我饭吃.哈哈,开个玩笑.今天我想借此机会来和大家聊聊Java ...

  9. JAVA高级特性反射和注解

    反射: 枚举反射泛型注解.html34.3 KB 反射, 主要是指通过类加载, 动态的访问, 检测和修改类本身状态或行为的一种能力, 并能根据自身行为的状态和结果, 调整或修改应用所描述行为的状态和相 ...

随机推荐

  1. Openshift 自建DDNS动态域名

    某种情况下如openstack或者openshift/kubernetes软件部署过程由于需要标准的 域名系统(DNS UPDATE)RFC 2136中的动态更新功能, 但是现有的阿里云/华为云均不提 ...

  2. 【译】如何使用docker-compose安装anchore

    如何使用docker-compose安装anchore,本篇译自Install with Docker Compose. Preface 在本节中,您将学习如何启动和运行独立的Anchore引擎安装, ...

  3. 一步一步搭建 Oracle Data Guard

    前言 为什么要写前言,因为我要吐槽一下.作为一个Java后端,搭建Oracle Data Guard真的是一件,嗯,既不专业也不擅长的事情,然而,为什么还是要我来弄? 因为DBA出差了,我们这边急着要 ...

  4. JavaScript for 、for...of 、for...in 等 iteration 效率测试

    由于不同浏览器,不同版本性能不一,且控制台本质是是套用了一大堆eval,沙盒化程度高,所以需使用node环境测试来提高准确性 // 准备待测数组 const NUM = 1e7; let arr = ...

  5. Hyper-V “SP2019SER”无法更改状态。操作失败,错误代码为“32788”。

    卸载Hyper-V,然后重装,再重启已有的Hyper-V服务器,报错如下: 尝试启动选定的虚拟机时出错.“SP2019SER”无法更改状态. 原因:卸载后导致虚拟网卡出现问题导致的. 解决办法: 右击 ...

  6. 地图 SDK 系列教程-在地图上展示指定区域(转载)

    腾讯位置服务地图SDK是一套提供多种地理位置服务的应用程序接口.通过调用该接口,开发者可以在自己的应用中加入地图相关的功能(如地图展示.标注.绘制图形等),轻松访问腾讯地图服务和数据,构建功能丰富.交 ...

  7. C/C++ 中的头文件 stdio.h和stdlib.h

    stdio 就是指 “standard input & output" 标准输入输出 stdio.h所包含的函数: 文件访问fopenfreopenfflushfclose二进制输入 ...

  8. CODING 受邀参与 DevOps 标准体系之系统和工具&技术运营标准技术专家研讨会

    2019 年 5 月 24-25 日,国内领先的一站式 DevOps 解决方案供应商 CODING 作为腾讯云的深度合作伙伴,受邀参加在成都举行的由 TC608 云计算标准和开源推进委员会主办,中国信 ...

  9. 关于useGeneratedKeys的使用

    今天认识到一个新参数 useGeneratedKeys  再这里我记录分享一下 在我们进行两表关联的时候,添加表1Specification 表2Specification_option 表一: 表二 ...

  10. packstack-ironic

    安装openstack Pike版本, 其它版本安装方法类似. centos7.6 packstack目前对NetworkManager 还不支持,我们修改下配置: systemctl disable ...