网站首页 > java教程 正文
点击蓝字
关注我们
一、泛型
Java 泛型是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
1.泛型的好处
安全
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
在没有泛型之前,从集合中读取到的每一个对象都必须进行类型转换,如果不小心插入了错误的类型对象,在运行时的转换处理就会出错。
没有泛型的情况下使用集合:
有泛型的情况下使用集合:
有了泛型后,定义好的集合names在编译的时候add(123)就会编译不通过。
消除强制转换
消除源代码中的许多强制类型转换,这使得代码更加可读,并且减少了出错机会。
没有泛型的代码段需要强制转换:
当重写为使用泛型时
2.泛型方法
定义泛型方法的规则:
1.所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前。
2.每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。
3.类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
泛型标记符:
E - Element (在集合中使用)
T - Type(类)
K - Key(键)
V - Value(值)
N - Number(数值类型)
?- 不确定的类型
3.如何使用泛型
public class 类名 <泛型类型1,...> {
//
}
注意事项:泛型类型必须是引用类型(非基本数据类型)
定义泛型类,在类名后添加一对尖括号,并在尖括号中填写类型参数,参数可以有多个,多个参数使用逗号分隔:
public class GenericClassaaa<a,b,c>{}
public <泛型类型> 返回类型 方法名(泛型类型 变量名) {
//
}
注意:
方法声明中定义的形参只能在该方法里使用,而接口、类声明中定义的类型形参则可以在整个接口、类中使用。
二、枚举
Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。
Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。
例如定义一个颜色的枚举类。
enum Color {
RED, GREEN, BLUE;
}
使用实例:
每个枚举都是通过 Class 在内部实现的,且所有的枚举值都是 public static final 的。
以上的枚举类 Color 转化在内部类实现:
泛型和枚举知识总结就到这里,希望对大家有所帮助!
END
星辰大海,永不止步
猜你喜欢
- 2024-10-06 关于Java中枚举Enum的深入剖析(java中枚举类型的使用)
- 2024-10-06 常用类及枚举类(一)(枚举类和普通类的区别)
- 2024-10-06 JAVA ---- 枚举/注解/反射(java中枚举的作用)
- 2024-10-06 深入剖析Java Enum类型(javaenum使用实例)
- 2024-10-06 Java enum——不一样的枚举对象(java 枚举使用)
- 2024-10-06 Java的enum的用法详解(java enum使用)
- 2024-10-06 学习廖雪峰的JAVA教程---java核心类(枚举类)
- 2024-10-06 Java枚举(JAVA枚举类型怎么用)
- 2024-10-06 java里枚举非常实用的3个方法,程序员一般都不注意
- 2024-10-06 给大伙讲一讲枚举的使用以及原理(枚举是干嘛的)
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)