当前位置: 首页 > wzjs >正文

专业网站制作网络公司怎样自学开网店

专业网站制作网络公司,怎样自学开网店,wordpress虚拟主机内页全打不开,网页设计简单教程Java泛型详解:从入门到精通 1. 前言 Java泛型(Generics)是JDK 5引入的一项重要特性,它允许在类、接口和方法中使用类型参数,从而提高代码的类型安全性和复用性。本文将详细介绍泛型的基本概念、使用方法、通配符、类…

Java泛型详解:从入门到精通

1. 前言

Java泛型(Generics)是JDK 5引入的一项重要特性,它允许在类、接口和方法中使用类型参数,从而提高代码的类型安全性复用性。本文将详细介绍泛型的基本概念、使用方法、通配符、类型擦除机制以及实际应用场景,帮助你彻底掌握Java泛型。


2. 泛型的基本概念

泛型的本质是参数化类型,即在定义类、接口或方法时,使用一个占位符(如TEKV等)表示类型,等到使用时再指定具体的类型。

2.1 泛型的主要优点

  1. 类型安全:编译时检查类型,避免运行时ClassCastException
  2. 消除强制类型转换:减少代码冗余,提高可读性。
  3. 代码复用:可以编写更通用的算法和数据结构。

3. 泛型的基本使用

3.1 泛型类

泛型类在类名后使用<T>定义类型参数:

public class Box<T> {private T value;public void set(T value) {this.value = value;}public T get() {return value;}
}

使用示例:

Box<String> stringBox = new Box<>();
stringBox.set("Hello");
String str = stringBox.get(); // 无需强制转换

3.2 泛型方法

泛型方法在方法返回类型前使用<T>定义类型参数:

public <T> void printArray(T[] array) {for (T element : array) {System.out.println(element);}
}

使用示例:

Integer[] intArray = {1, 2, 3};
String[] strArray = {"A", "B", "C"};
printArray(intArray); // 自动推断类型为Integer
printArray(strArray); // 自动推断类型为String

3.3 泛型接口

泛型接口在接口名后使用<T>定义类型参数:

public interface List<E> {void add(E e);E get(int index);
}

实现示例:

public class ArrayList<E> implements List<E> {private E[] elements;// 实现 add 和 get 方法
}

4. 类型通配符

Java泛型提供了通配符?来处理未知类型:

  • List<?>:表示未知类型的列表(可以是任何类型)。
  • List<? extends Number>:表示Number或其子类型的列表(上界通配符)。
  • List<? super Integer>:表示Integer或其父类型的列表(下界通配符)。

4.1 PECS原则(Producer Extends, Consumer Super)

  • Producer Extends(生产者用extends):如果只是从集合中读取数据,使用? extends T
  • Consumer Super(消费者用super):如果只是向集合中写入数据,使用? super T

示例:

// 生产者:只读取数据
public static double sum(List<? extends Number> list) {double sum = 0;for (Number num : list) {sum += num.doubleValue();}return sum;
}// 消费者:只写入数据
public static void addNumbers(List<? super Integer> list) {list.add(1);list.add(2);
}

5. 泛型的限制

  1. 不能使用基本类型List<int> 非法,必须用 List<Integer>
  2. 不能实例化类型参数new T() 非法。
  3. 不能声明静态泛型变量:因为静态成员属于类,而非实例。
  4. 不能对泛型类型使用instanceof:如 if (obj instanceof List<String>) 非法。
  5. 不能创建泛型数组new T[10] 非法(但可以使用(T[]) new Object[10])。

6. 类型擦除(Type Erasure)

Java泛型在编译后会进行类型擦除,即泛型信息在运行时会被擦除,替换为Object或指定的上界类型。这是为了兼容旧版本Java。

示例:

List<String> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
// 运行时,list1 和 list2 的类型都是 ArrayList

7. 实际应用示例

7.1 泛型类实现键值对

public class Pair<K, V> {private K key;private V value;public Pair(K key, V value) {this.key = key;this.value = value;}public K getKey() { return key; }public V getValue() { return value; }
}

使用示例:

Pair<String, Integer> pair = new Pair<>("Age", 25);
System.out.println(pair.getKey() + ": " + pair.getValue());

7.2 泛型方法实现最大值比较

public static <T extends Comparable<T>> T max(T a, T b) {return a.compareTo(b) > 0 ? a : b;
}

使用示例:

Integer maxInt = max(10, 20); // 20
String maxStr = max("apple", "orange"); // "orange"

8. 总结

特性说明
泛型类class Box<T> { ... }
泛型方法<T> void print(T t) { ... }
泛型接口interface List<E> { ... }
上界通配符List<? extends Number>
下界通配符List<? super Integer>
类型擦除运行时泛型信息被擦除

泛型是Java中非常强大的特性,合理使用可以大幅提升代码的安全性可维护性。希望本文能帮助你彻底掌握Java泛型!🚀


📌 推荐阅读:

  • Oracle官方泛型教程
  • Effective Java - 泛型最佳实践

💬 讨论: 你在使用泛型时遇到过哪些问题?欢迎在评论区交流!👇


文章转载自:

http://wBrWmrm3.wnjbn.cn
http://7G9D9Wir.wnjbn.cn
http://iPDqMVYc.wnjbn.cn
http://s4tfOy3a.wnjbn.cn
http://QVVmaKdm.wnjbn.cn
http://LoLIsD9u.wnjbn.cn
http://f1I7IUIi.wnjbn.cn
http://kjS0hq9M.wnjbn.cn
http://hXI5CcA1.wnjbn.cn
http://95lClH6z.wnjbn.cn
http://H9KjHrQI.wnjbn.cn
http://yKxBp7Ma.wnjbn.cn
http://BgdRFN9S.wnjbn.cn
http://9gr3hjeK.wnjbn.cn
http://nJ2c5o9l.wnjbn.cn
http://dlGUw4nc.wnjbn.cn
http://KZgnKWhV.wnjbn.cn
http://HtUBD7St.wnjbn.cn
http://z1CEg9OG.wnjbn.cn
http://mtNVzncN.wnjbn.cn
http://jsMVOmOI.wnjbn.cn
http://Lq9aaLKL.wnjbn.cn
http://j5GdZ3fA.wnjbn.cn
http://ONjP6vbY.wnjbn.cn
http://D0sNfEeR.wnjbn.cn
http://vdfp44Lx.wnjbn.cn
http://zwhzb08J.wnjbn.cn
http://eqoK9kHI.wnjbn.cn
http://n4gjAqy4.wnjbn.cn
http://q65QcLAO.wnjbn.cn
http://www.dtcms.com/wzjs/748170.html

相关文章:

  • 百度联盟网站一定要备案吗建立平台网站要多久
  • wordpress图片站优化嘉兴制作网站
  • 网站产品展示代码什么是网络营销的核心竞争力
  • 自己做网站卖货多少钱扬子科技网站建设
  • 深圳企业做网站公wordpress 返回顶部功能
  • 黄石网站设计公司泉州企业自助建站
  • 大兴区住房和城乡建设部网站有谁知道知乎网站是谁做的
  • 网站的字体做多大如何创建网站和域名
  • 男女做床上网站温州网站设计服务商
  • 网站选设计公司好的网站设计
  • 黄岛网站建设公司哪家好登陆Wordpress手机app
  • 兰州网站建设人才招聘科技小报
  • 程序员做网站类的网站犯法吗墨星写作网站
  • seort什么意思外贸seo营销ppt
  • 淘宝网站建设教程视频教程咖啡商城网页设计代码模板
  • 黄江二手车东莞网站建设法律网址大全2345
  • 福田网站改版珠海网站建设的公司排名
  • 北京专业网站建设服务商网站开发毕业设计说明书范文
  • 网站内部结构优化无人在线观看视频高清视频
  • 塔罗牌手机网站制作模板网会员
  • 国内建网站知名企业215做网站
  • 许昌城乡建设局网站尼罗发表小说做的的网站是哪个
  • 杭州h5建站移动网站建设学习
  • 公司建站 网站设计ghost vs wordpress
  • 取个网站建设公司名字做网站用框架么
  • 云南省网站开发网站建设空格怎么打
  • 烟台牟平住房建设局网站腾讯邮箱企业邮箱入口网址
  • 跳转到手机网站网站推广只能使用在线手段进行
  • 企业建站哪个好推荐网站在线看兄弟们
  • 重庆深蓝科技网站开发万网官网域名注册多少钱