枚举

//定义枚举
enum MyEnum{
ITEM_A,
ITEM_B
}
public static void main(String[] args) {
//values()获取所枚举项的集合
MyEnum[] enums=MyEnum.values();
for (MyEnum myEnum : enums) {
print(myEnum.toString());//输出ITEM_A ITEM_B
} //valueOf("字符串")把字符串转为枚举
MyEnum myEnum=MyEnum.valueOf("ITEM_B");
print(myEnum.toString());//结果 ITEM_B //compareTo(b)比较两者在定义时的顺序,若b后于比较者返回-1,小于比较者时返回1,相同时为0
int i=MyEnum.ITEM_A.compareTo(MyEnum.ITEM_B);
System.out.println(i);//结果 1 //ordinal()得到索引位置,从0开始
int index=MyEnum.ITEM_B.ordinal();
System.out.println(index);//结果 1
}

枚举也有构造方法,但必须使用private,常用于给枚举项加标签说明功能

// 定义枚举
enum MyEnum {
ITEM_A("我是A啊"), ITEM_B("我是B呢"), ITEM_C(23); // 最后一项要写; private String description;
private int num; // 构造方法须用private
private MyEnum(String descn) {
description = descn;
} private MyEnum(int i) {
num = i;
} // 对外提供获取描述信息
public String getDesn() {
return description;
} public int getI() {
return num;
}
} public static void main(String[] args) {
// values()获取所枚举项的集合
MyEnum[] enums = MyEnum.values();
for (MyEnum myEnum : enums) {
print(myEnum.getDesn());// 我是A啊 我是B呢 null
}
System.out.print(MyEnum.ITEM_C.getI());// 23
}

泛型

//可多个泛型,泛型可以约束
public class Examplte02<T1 extends List, T2> {
//可以为字段类型使用泛型
private T2[] mens;
//参数可以泛型
public void say(T2 arg) {
System.out.println(arg);
}
//返回数据也可以为泛型
public T1 getResult(T2 arg) {
ArrayList<Integer> arrays = new ArrayList<Integer>();
arrays.add((int) arg);
return (T1) arrays;
}
} //调用
public static void main(String[] args) {
//这里不需要具体到ArrayList<string>等, 且Integer不能使用int代替
Examplte02<ArrayList<Integer>, Integer> exam02=new Examplte02<ArrayList<Integer>, Integer>();
exam02.say(23);
ArrayList<Integer> a= exam02.getResult(25);
}

枚举

使用类型通配符

格式: 泛型类名称<? extends List>

? 与T的区别在于,例如一个类里的现个方法要用到T泛型,那么在类上面也要写T。但?就不需要,不受限制。

public class Examplte02{
//这里使用通配符后,类名不需要与泛型T那样的写法
public void say(ArrayList<? extends Number> arg) {
System.out.println(arg.size());
}
}
//调用
public static void main(String[] args) {
Examplte02 e02=new Examplte02();
ArrayList<Integer> as=new ArrayList<Integer>();
as.add(10);
e02.say(as);
//这里可传Double也行,因为Double继承于Number
ArrayList<Double> as2=new ArrayList<Double>();
as2.add(20d);
e02.say(as2);
}

注意

public class Examplte02{
//这里使用supper,说明类型必须是Number或Number的父类,这里向上限制;extends是向下限制
public void say(ArrayList<? super Number> arg) {
arg.add(25);//这里会报错,使用通配符后只能读和删除,不能新增或变更值
arg.get(0);//这里正常
arg.remove(0);//这里正常 System.out.println(arg.size());
}
}

4.JAVA语言基础部分—枚举与泛型的更多相关文章

  1. day03<Java语言基础+>

    Java语言基础(逻辑运算符的基本用法) Java语言基础(逻辑运算符&&和&的区别) Java语言基础(位运算符的基本用法1) Java语言基础(位异或运算符的特点及面试题) ...

  2. Java学习总结(二)----Java语言基础

    1.     Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...

  3. java语言基础02

    一.Java语言基础(常量的概述和使用)(掌握) 1:什么是常量 就是在程序的执行过程中其值不发生改变的量. 2:Java中常量的分类 (1):字面值常量 (2):自定义常量(面向对象部分讲解) 3: ...

  4. Java之--Java语言基础组成—数组

    Java语言基础组成-数组 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的数组,数组 ...

  5. Java之--Java语言基础组成—函数

    Java语言基础组成-函数 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的函数,函数 ...

  6. Java之--Java语言基础组成(关键字、标识符、注释、常量和变量、运算符)

    Java语言基础组成-关键字.标识符.注释.常量和变量.运算符 Java语言由8个模块构成,分别为:1.关键字:2.标识符(包名.类名.接口名.常量名.变量名等):3.注释:4.常量和变量:5.运算符 ...

  7. Java语言基础(二) Java关键字

    Java语言基础(二) Java关键字 Java关键字比较多,我就不列举出来了,只记录一些常用的小知识点: ①Java的关键字只有小写. ②then.sizeof都不是Java的关键字,熟悉C++的程 ...

  8. Java语言基础(九)

    Java语言基础(九) 一.自增运算(++) 自减运算(--) i++ 就是将i+1再赋给 i i-- 是将i-1再赋给 i 对变量i,j来说,i++ 或++i 这里没什么区别,都是将i的值加1后,再 ...

  9. Java语言基础(八)

    Java语言基础(八) 一.数学运算  + - * /  % (1)凡是byte  short  char类型都按int类型的计算   看看上面的代码,为什么出错! 我已经将100转成byte类型,( ...

随机推荐

  1. ios 序列化

    1到底这个序列化有啥作用? 面向对象的程序在运行的时候会创建一个复杂的对象图,经常要以二进制的方法序列化这个对象图,这个过程叫做Archiving. 二进制流可以通过网络或写入文件中(来源于某教材的一 ...

  2. C++模板 · 为什么要引入模板机制?

    刚学过类模板时,很不理解,甚至觉得这简直没有用,在自己骗自己嘛!明明很方便的东西,偏偏要加个类模板来回折腾.可能因为我们刚开始写的程序很简单,有时候,可能程序复杂一点,对理解一些概念更有帮助. 今天在 ...

  3. windows显示文件扩展名

    搜索打开windows的文件资源管理选项,如下去掉“隐藏已知文件类型的扩展名”即可 打开之后显示如下:

  4. java发送email一般步骤

    java发送email一般步骤 一.引入javamail的jar包: 二.创建一个测试类,实现将要发送的邮件内容写入到计算机本地,查看是否能够将内容写入: public static void mai ...

  5. Django中重定向页面的时候使用命名空间

    urls.py from django.urls import path from . import views app_name='front' urlpatterns = [ path('',vi ...

  6. 数据结构( Pyhon 语言描述 ) — —第9章:列表

    概念 列表是一个线性的集合,允许用户在任意位置插入.删除.访问和替换元素 使用列表 基于索引的操作 基本操作 数组与列表的区别 数组是一种具体的数据结构,拥有基于单个的物理内存块的一种特定的,不变的实 ...

  7. Wannafly挑战赛23 A 字符串

    题目描述 小N现在有一个字符串S.他把这这个字符串的所有子串都挑了出来.一个S的子串T是合法的,当且仅当T中包含了所有的小写字母.小N希望知道所有的合法的S的子串中,长度最短是多少. 输入描述: 一行 ...

  8. pep-8要求归纳

    代码布局缩进每个缩进级别使用4个空格. 连续行应使用Python的隐式行连接括号,括号和大括号,或使用悬挂缩进 来垂直对齐包装元素.当使用悬挂式缩进时,应考虑以下内容:第一行应该没有任何争论,应该使用 ...

  9. cookie小结(转)

    原文地址:http://www.cnblogs.com/xianyulaodi/p/6476991.html#_label0 作者:咸鱼老弟   阅读目录 什么是cookie       官方定义:N ...

  10. jsonp实现跨域访问json数据

    前台js function init() { $.ajax({ url: 'http://localhost:8012/index.json', dataType: "jsonp" ...