枚举

//定义枚举
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. centos7中将python2.7.5版本升级到3.x版本

    一.安装gcc源码编译器 yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl-devel 二.下载python软件包 wget https ...

  2. Codeforces Round #877 (Div. 2) E. Danil and a Part-time Job

    E. Danil and a Part-time Job 题目链接:http://codeforces.com/contest/877/problem/E time limit per test2 s ...

  3. PAT Basic 1050

    1050 螺旋矩阵 本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”.所谓“螺旋矩阵”,是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行 n 列,满足条件: ...

  4. struts 乱码

    在进行struts开发的过程中,总也是出现很多的乱码问题 ,但归根到底,也只是以下三种情况: ㈠页面显示中文乱码 ㈡传递参数中文乱码 ㈢国际化资源文件乱码 下面就这三中情况介绍怎么在具体项目中处理这些 ...

  5. C#保存图片到文件夹区分8位和24位

    1.保存图像--24位位图(显示的图像,包括增加结果到界面上的数据) Image image2 = default(Image); image2 = cogRecordDisplay1.CreateC ...

  6. Html 前端jinjia2 & ajax

    本章内容: jinja2 Ajax中的if语句 参考文档 html可以参照学习:w3school bootstrap学习:bootstrap 综合类学习网站:runoob jinja2学习网站:jin ...

  7. 【LeetCode】Powerful Integers(强整数)

    这道题是LeetCode里的第970道题. 题目描述: 给定两个正整数 x 和 y,如果某一整数等于 x^i + y^j,其中整数 i >= 0 且 j >= 0,那么我们认为该整数是一个 ...

  8. [android 应用框架api篇] bluetooth

    bluetooth接口 android.bluetooth.jar 官网网址: 接口类: https://developer.android.com/reference/android/bluetoo ...

  9. HDU-1829 A Bug's Life。并查集构造,与POJ1709异曲同工!

    A Bug's Life                                                     Find them, Catch them 都是并查集构造的题,不久前 ...

  10. 02-offsetLeft和offsetTop

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...