(一)枚举 enum(相当于一个类):

枚举常用的方法:

枚举特性:

类型安全,紧凑有效的数据定义,可以和程序其他部分完美交互,运行效率高

(二)泛型:

语法:

类名<泛型名称>

常规用法:

1)定义泛型类时声明多个类型

2)定义泛型类时声明数组类型

public class ArrayClass <T>{private  T[] array;public T[] getArray() {return array;}public void setArray(T[] array) {this.array = array;}public static void main(String[] args) {ArrayClass<String> demo =new ArrayClass<String>();String value[] ={"成员1","成员2","成员3"};demo.setArray(value);String array[]=demo.array;for (String i:array){System.out.println(i);}}
}

3)集合类声明容器的元素:

4)限制泛型可用类型:

语法: class 类名名称<T extends anyClass> ,注:anyClass:另一个类

注:泛型类型不但可以向下造型还可以向上造型,使用super关键字

5)使用类型通配符

语法: 泛型名称<? extends List> a=null;

6)继承泛型与实现泛型接口

练习题

1):彩虹枚举 编写一个彩虹枚举,枚举中有“红橙黄绿蓝靛紫”7种颜色。

public enum Rainbow {red, orange, yellow, green, blue, indigo, purple
}

2): 设计一个厕所类,提供一个入口方法,要求男生只能进男厕所,女生只能进女厕所。

class  Toilet <T>{public  void enter(T t){}
}
class  Male{}
class  Female{}
public class Demo {public static void main(String[] args) {Toilet<Male> mansroom=new Toilet();Toilet<Female> womansroom=new Toilet();}
}

3):通道提示 创建一个通道类,类中有一个入口方法,如果顾客进入通道则提示“顾客您好,小心地滑”。如果员工进入通道则没有任何提示内容。请创建两个通道对象,一个是公共通道,一个员工通道。顾客不能进入员工通道。

class Entrance<T> {public void enter(T t) {if(t instanceof Customer) {System.out.println("顾客您好,小心地滑");}}
}class Customer {}class Staff {}public class Demo {public static void main(String[] args) {Staff tom=new Staff();Customer mali=new Customer();Entrance<Staff> staffEntrance = new Entrance();staffEntrance.enter(tom);Entrance publicEntrance = new Entrance();publicEntrance.enter(tom);publicEntrance.enter(mali);}
}

4):权限设置 模拟明日学院的权限设置模块,0表示游客,1表示注册用户,2表示VIP会员,3表示管理员,控制台输入0~3中的任意数字后,输出每种权限的“特权”。游客:观看部分视频、浏览所有课程、注册、登录;注册用户:免费观看所有视频、部分配套习题、收藏课程、实时提问、个人设置;VIP会员:免费观看所有视频、浏览所有习题及答案、源码下载、定期在线互动交流;管理员:后台所有管理模块、前台所有功能模块。

import java.util.Scanner;public class PermitEnum { // 创建一个PermitEnum(权限)类enum POP {TOURIST, USER, VIP, MANAGER; // 把常量放置在枚举类型Identity(身份)中public static POP getPop(int id) {// 定义一个静态方法,用来根据输入获取对应POP枚举值switch (id) {case 0:return POP.TOURIST;case 1:return POP.USER;case 2:return POP.VIP;case 3:return POP.MANAGER;default:return POP.TOURIST;}}}public static void main(String[] args) {System.out.print("Welcome to 明日学院!\n\n请输入您的身份\n(0表示游客,1表示注册用户,2表示VIP会员,3表示管理员):"); // 提示信息Scanner sc = new Scanner(System.in); // 控制台输入POP pop = POP.getPop((int) sc.nextInt());// 根据输入获取枚举值switch (pop) { // 多分支语句case TOURIST: // 登录人的身份是“游客”时,输出“游客”的权限System.out.println("您现在是“游客”,可享有的权限如下:\n观看部分视频、浏览所有课程、注册、登录!");break;case USER: // 登录人的身份是“注册用户”时,输出“注册用户”的权限System.out.println("您已成为注册用户,可享有的权限如下:\n免费观看所有视频、部分配套习题、收藏课程、实时提问、个人设置!");break;case VIP: // 登录人的身份是“VIP会员”时,输出“VIP会员”的权限System.out.println("您已成为VIP会员,可享有的权限如下:\n免费观看所有视频、所有习题及答案、源码下载、定期在线互动交流!");break;case MANAGER: // 登录人的身份是“管理员”时,输出“管理员”的权限System.out.println("您是大BOSS,拥有本站所有权限:\n后台所有管理模块、前台所有功能模块!");break;}sc.close(); // 关闭控制台输入}
}

5):体检记录 按照以下步骤完成体检记录模拟:

(1)创建一个性别枚举,有男性和女性两个枚举项。

(2)创建一个测试类,类有A、B、C 3个泛型。分别使用这3个泛型创建3个成员变量。编写可以为3个成员变量赋值的构造方法。

(3)创建第一个测试类对象date,该对象用于记录日期,3个成员变量分别记录表示年、月和日的整型数字,在控制台打印date对象的所有属性值。

(4)创建第二个测试类对象tom,该对象用于记录人物信息,3个成员变量分别记录姓名、身高和性别。姓名是字符串,身高是整数,性别使用(1)中提供的枚举。在控制台打印tom对象的所有属性值。

enum Sex {male, female
}public class Demo<A, B, C> {A a;B b;C c;public Demo(A a, B b, C c) {this.a = a;this.b = b;this.c = c;}@Overridepublic String toString() {return "Demo [a=" + a + ", b=" + b + ", c=" + c + "]";}public static void main(String[] args) {Demo<Integer, Integer, Integer> date = new Demo<>(2008, 8, 8);System.out.println(date);Demo<String, Integer, Sex> tom = new Demo<String, Integer, Sex>("杰克", 175, Sex.male);System.out.println(tom);}}

20220402java学习笔记 ------枚举与泛化相关推荐

  1. c语言如何宏定义枚举型结构体,C语言学习笔记--枚举结构体

    枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...

  2. kotlin学习笔记——枚举、封闭类

    1.枚举 kotlin中提供类枚举的实现,与java相同.枚举可以带参数,如 enum Icon(val res: Int){MENU(R.drawable.menu),BACK(R.drawable ...

  3. ESL2.5 高维问题的局部方法学习笔记(含泛化误差分解MSE分解)

    2.5 高维问题的局部方法 这是一篇有关<统计学习基础>,原书名The Elements of Statistical Learning的学习笔记,该书学习难度较高,有很棒的学者将其翻译成 ...

  4. C语言学习笔记---枚举类型enum

      枚举类型通常用来存放整形常量.可以使用enum关键字来创建一个"新的类型",用来表示一组关系比较密切的整形常量.   可以这样声明: enum spectrum { red,o ...

  5. 【EF学习笔记09】----------使用 EntityState 枚举标记实体状态,实现增删改查

    [EF学习笔记09]----------使用 EntityState 枚举标记实体状态,实现增删改查 讲解之前,先来看一下我们的数据库结构:班级表 学生表 如上图,实体状态由EntityState枚举 ...

  6. TS基础2(泛型、枚举、元组)-学习笔记

    文章目录 TS基础2(泛型.枚举.元组)-学习笔记 泛型 枚举 元组 例子参考 TS基础2(泛型.枚举.元组)-学习笔记 泛型 //泛型(Generics)是指在定义函数.接口或类的时候,不预先指定具 ...

  7. C++ 学习笔记(19)new/delete表达式、定位new、typeid、dynamic_cast、type_info、枚举类型、成员函数指针、union、位域、volatile限定符、链接指示

    C++ 学习笔记(19)new/delete表达式.定位new.typeid.dynamic_cast.type_info.枚举类型.成员函数指针.union.位域.volatile限定符.链接指示 ...

  8. C++ 学习笔记之(19) new、delete表达式、RTTI(运行时类型识别)、枚举、类成员指针、嵌套类、局部类、位域、volatile、extern C

    C++ 学习笔记之(19) new.delete表达式.RTTI(运行时类型识别).枚举.类成员指针.嵌套类.局部类.位域.volatile.extern C C++ 学习笔记之(19) new.de ...

  9. SV学习笔记—结构体及枚举类型及字符串

    目录 1.结构体 1.1 压缩结构体 1.2 非压缩结构体 1.3联合结构体 2.枚举类型 3.字符串 1.结构体 Verilog的最大缺陷之一是没有数据结构,SV中可以使用struct语句创建结构, ...

最新文章

  1. 去除0值和nan_Pandas 1.0的新功能
  2. JDK和SSH无密码配置
  3. ABAP常用字符串操作收集整理
  4. NYOJ 608 畅通工程
  5. python mysql 错误处理_Python-MySQL中的错误处理
  6. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 4. 函数
  7. 系统脆弱性检测 (sysytem vulnerability detection) 的研究分类
  8. mysql服务没有权限开机不会自启动_计算机服务项里没有MySQL服务,无法设置开机自启动或者关闭自启动,的解决办法...
  9. linux-vi命令
  10. 在日常生活中会使用到的管理系统
  11. 绝地求生主播御用手机雷达分屏
  12. emu8086,汇编程序:屏幕输入字符串,设置寄存器的值
  13. EasyBCD安装双硬盘的windows+Ubuntu16.04双系统,那些年我们一起踩过的那些坑
  14. UVa 1586 Molar mass
  15. 视频教程-数据中台-数据仓库建模设计方法和实现-数据仓库
  16. mysql组复制(MGR)——部署
  17. 新年到,小飞猫来啦~
  18. left join on左连接的使用
  19. win7如何开启Telnet服务
  20. jmeter添加cookie

热门文章

  1. 学无止境,打算停更一段时间
  2. Maven的POM文件parent节点不可以使用properties里面的变量
  3. matplotlib画图自定义marker
  4. python数据处理+matplotlib可视化(柱状图、折线图、表格)
  5. emmc挂载,分区及格式化
  6. 常用压缩格式效率对比
  7. [Codewar训练]Longest Common Subsequence(Performance version)(最长子序)
  8. Shell快速找回历史命令
  9. HBase和MongoDB的区别和联系
  10. AT89C51单片机外部中断