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

用jsp做网站的感想北京海淀区区号

用jsp做网站的感想,北京海淀区区号,wordpress 空间商,百度关键词策划和seo的优化通配符(Wildcard)是 Java 泛型中非常重要的一个特性,它允许我们处理未知类型的数据。 1. 什么是通配符? 通配符(?)是一种特殊的泛型符号,用于表示某种未知类型。它通常出现在方法参数、返回值…

通配符(Wildcard)是 Java 泛型中非常重要的一个特性,它允许我们处理未知类型的数据。

1. 什么是通配符?

通配符(?)是一种特殊的泛型符号,用于表示某种未知类型。它通常出现在方法参数、返回值或变量声明中,用来增强代码的灵活性。

示例:
public void printList(List<?> list) {for (Object obj : list) {System.out.println(obj);}
}

在这个例子中,List<?> 表示一个 List,但它的具体类型未知(可以是任何类型)。通过使用通配符,这个方法可以接受任意类型的 List


2. 三种通配符的含义

Java 中的通配符分为三种:无界通配符、上界通配符和下界通配符。它们的作用不同,适用于不同的场景。


(1) 无界通配符:<?>
  • 含义:表示任意类型。
  • 用途:当你不需要关心具体的类型时,可以使用无界通配符。
示例:
public void printList(List<?> list) {for (Object obj : list) {System.out.println(obj);}
}// 使用
List<String> stringList = Arrays.asList("A", "B");
List<Integer> intList = Arrays.asList(1, 2, 3);printList(stringList); // 可以传入 List<String>
printList(intList);    // 也可以传入 List<Integer>

在这个例子中,List<?> 表示可以接受任意类型的 List,但我们只能将其元素视为 Object 类型(因为具体类型未知)。


(2) 上界通配符:<? extends T>
  • 含义:表示某个类型 T 或其子类。
  • 用途:当你需要读取数据,并且希望这些数据是某个类型或其子类时,可以使用上界通配符。
示例:
public void printNumbers(List<? extends Number> list) {for (Number num : list) {System.out.println(num);}
}// 使用
List<Integer> intList = Arrays.asList(1, 2, 3);
List<Double> doubleList = Arrays.asList(1.1, 2.2, 3.3);printNumbers(intList);   // 可以传入 List<Integer>
printNumbers(doubleList); // 也可以传入 List<Double>

在这个例子中,List<? extends Number> 表示可以接受 Number 或其子类(如 IntegerDouble 等)的列表。由于我们知道所有元素都是 Number 的子类,因此可以安全地读取它们作为 Number 类型。

注意:使用上界通配符时,不能向集合中添加元素(除了 null),因为编译器无法确定具体类型。

为什么不能写入?
List<? extends Number> numbers = new ArrayList<>();
numbers.add(new Integer(1)); // 编译错误
numbers.add(new Double(1.1)); // 编译错误
numbers.add(null);           // 允许,因为 null 是所有类型的子类
(3) 下界通配符:<? super T>
  • 含义:表示某个类型 T 或其父类。
  • 用途:当你需要写入数据,并且希望这些数据是某个类型或其父类时,可以使用下界通配符。
示例:
public void addNumbers(List<? super Integer> list) {list.add(1);list.add(2);list.add(3);
}// 使用
List<Number> numberList = new ArrayList<>();
addNumbers(numberList); // 可以传入 List<Number>List<Object> objectList = new ArrayList<>();
addNumbers(objectList); // 也可以传入 List<Object>

在这个例子中,List<? super Integer> 表示可以接受 Integer 或其父类(如 NumberObject 等)的列表。由于我们知道 Integer 是这些类型的子类,因此可以安全地向集合中添加 Integer 类型的元素。

注意:使用下界通配符时,读取数据时只能将其视为 Object 类型,因为具体类型未知。

为什么读取受限?
List<? super Integer> numbers = new ArrayList<>();
numbers.add(1); // 允许写入 Integer
Object obj = numbers.get(0); // 只能读取为 Object

3. 通配符的实际应用场景

(1) 上界通配符的应用

上界通配符常用于读取数据的场景,例如计算集合中的最大值、打印集合内容等。

示例:计算集合中的最大值
public <T extends Comparable<? super T>> T max(List<? extends T> list) {if (list.isEmpty()) {throw new IllegalArgumentException("List is empty");}T max = list.get(0);for (T item : list) {if (item.compareTo(max) > 0) {max = item;}}return max;
}// 使用
List<Integer> intList = Arrays.asList(1, 5, 3);
System.out.println(max(intList)); // 输出 5

在这个例子中,List<? extends T> 允许我们接受任何 T 或其子类的列表,而 Comparable<? super T> 则允许我们比较 T 或其父类的对象。


(2) 下界通配符的应用

下界通配符常用于写入数据的场景,例如向集合中添加元素。

示例:向集合中添加元素
public void copy(List<? super Integer> dest, List<? extends Number> src) {for (Number num : src) {dest.add((Integer) num.intValue());}
}// 使用
List<Integer> intList = new ArrayList<>();
List<Number> numberList = Arrays.asList(1.1, 2.2, 3.3);copy(intList, numberList);
System.out.println(intList); // 输出 [1, 2, 3]

在这个例子中,List<? super Integer> 允许我们将 Integer 类型的元素添加到目标集合中,而 List<? extends Number> 则允许我们从源集合中读取 Number 类型的元素。

4. 总结

通配符类型含义场景
<?>表示任意类型不关心具体类型,只读操作
<? extends T>表示 T 或其子类读取数据,确保数据是 T 或其子类
<? super T>表示 T 或其父类写入数据,确保数据是 T 或其父类
学习建议
  1. 先掌握基本概念:理解通配符的基本含义和限制。
  2. 结合实际场景练习:尝试在集合操作中使用通配符,体会它们的作用。
  3. 多看源码:Java 标准库(如 Collections 类)中有很多使用通配符的例子,可以帮助你加深理解。


文章转载自:

http://wyaTFmLH.trjdr.cn
http://rEyxphKb.trjdr.cn
http://SJaKLIBc.trjdr.cn
http://r52QIXuO.trjdr.cn
http://DKztiPmj.trjdr.cn
http://qJz1K6O4.trjdr.cn
http://jjNfN1oc.trjdr.cn
http://N3HFyb0H.trjdr.cn
http://IuNZqQ7z.trjdr.cn
http://5w7JGHXH.trjdr.cn
http://xWnqt1D7.trjdr.cn
http://b3b6cWuA.trjdr.cn
http://noDWzxsE.trjdr.cn
http://sH0m0xaa.trjdr.cn
http://8XxO6Bnn.trjdr.cn
http://172iyrW0.trjdr.cn
http://s6zIIAxr.trjdr.cn
http://I2vNktbR.trjdr.cn
http://e7uMFVS1.trjdr.cn
http://VDEmUpo8.trjdr.cn
http://DV8mNElx.trjdr.cn
http://ru7OWhvy.trjdr.cn
http://vAi36oCR.trjdr.cn
http://gBdPgLqg.trjdr.cn
http://CXooRHKD.trjdr.cn
http://cCAMomKj.trjdr.cn
http://qjXOkoYY.trjdr.cn
http://6P8UDXyZ.trjdr.cn
http://vYZ578dx.trjdr.cn
http://BD0FmjUS.trjdr.cn
http://www.dtcms.com/wzjs/658373.html

相关文章:

  • 晓风彩票网站建设软件怎么用电脑自带软件做网站页面
  • 会展行业门户网站建设营销网站建设选择
  • 哪个网站做推广做的最好wordpress登录密码
  • 芜湖市住房和城乡建设厅网站建设工程教育网怎么样
  • 广州专业做外贸网站抖音权重查询工具
  • 丽江旅游网站建设会做网站开发 但是不会二次开发
  • 对网站建设这门课程的想法手机网站申请
  • 亚马逊deal网站怎么做河北省建设部网站
  • 深圳中高端网站建设做网站时如何将前端连接到后台
  • 网站开发准备网站seo快速排名软件
  • 企业做淘宝客网站有哪些ai素材免费下载网站
  • 网站建设 合肥wordpress分类发布文章
  • 宁波网站建设ysdsh如何做网络免费推广方案
  • 建网站义乌深圳优化公司
  • 网站建设丶金手指下拉13怎么用服务器lp做网站
  • 佛山网站建设公司-印象互动北京网站制作 建设推广
  • 梅州做网站设计公司怎么对网站的数据库做管理
  • 手机访问网站建设中360搜索的网站收录入口
  • 手机网站字体自适应做网站 二维码登录
  • wordpress前端文章编辑器南宁企业官网seo
  • 东营专业网站建设公司电话昆明网上房地产官网
  • 网站程序开发要点企业qq官网
  • 万户信息 做网站怎么样网站开发经营范围
  • 做网站需要 的文档网络运营公司排名
  • 企业网站登录入口官网开发公司赠送阁楼视同销售
  • 做网站推广员图片处理问题加工平台苏州纳米所
  • 网站模块在线制作万网域名注册网站
  • 个人如何办网站网站搭建网站管理
  • 三丰云怎么做网站西安观止软件科技有限公司
  • 广州天与地网站建设公司网站服务器租赁