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

做设计哪个网站可以接单昆明网络推广

做设计哪个网站可以接单,昆明网络推广,wordpress 底部导航菜单,主题字体怎么设置 wordpress欢迎来到啾啾的博客🐱。 录学习点滴,分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 欢迎评论交流,感谢您的阅读😄。 泛型 effective-java:29.优先考虑泛型 30.优先使用泛型方法 什么时候需要泛…

欢迎来到啾啾的博客🐱。
录学习点滴,分享工作思考和实用技巧,偶尔也分享一些杂谈💬。
欢迎评论交流,感谢您的阅读😄。

泛型

effective-java:29.优先考虑泛型 30.优先使用泛型方法

什么时候需要泛型呢?当需要限制类型,但又需要类型灵活不需要强制转换的场景。

泛型提供了Java常见异常ClassCastException的一个解法。即通过泛型约束对象类型返回,让强制类型转换时更安全、可读,也为编译器提供类型检查依据。
具体来说,泛型使用类型参数 Type Parameter,可以在编译时就制定并检查类型。

泛型实现机制

泛型的实现机制为类型擦除(Type Erasure)。

编译时编译器利用泛型信息进行类型检查,字节码生成时泛型信息会被擦除,无参<T>和有参<T extend ?>替换成上界。
当从泛型类中获取数据时,编译器会自动插入一个强制类型转换字节码指令。

无参泛型

以RouYi项目为例,无参泛型在项目中常见于通用Result类。
![[Pasted image 20250424115724.png]]

无参泛型T较Object在使用上的差异在于无参类型获取元素不需要进行强制类型转换,而是编译器进行了类型转换。可读性更高。

// 使用Object的不便
public class ObjectBox {private Object item;public void set(Object item) {this.item = item;}public Object get() {return item;}public static void main(String[] args) {ObjectBox box = new ObjectBox();box.set("Hello");box.set(123);//覆盖// 需要强制转换,且有风险Object retrieved = box.get();if (retrieved instanceof String) {String content = (String) retrieved; // 需要强制转换System.out.println(content.toUpperCase());} else if (retrieved instanceof Integer) {Integer num = (Integer) retrieved; // 需要强制转换System.out.println(num * 2); }// 如果不小心写错了转换类型,就会出问题String oops = (String) box.get(); // 如果 box.get() 返回的是 123, 这里会抛出 ClassCastException}
}// 使用泛型可以制定类型public class TBox<T> {private T item;public  void set(T item) {this.item = item;}public T get() {return item;}public static void main(String[] args) {// 实例化时制定参数类型TBox<String> tBox = new TBox();tBox.set("hello");tBox.set(123);// 编译错误!类型不匹配,无法将 int (Integer) 赋值给 StringTBox<Integer> intBox = new TBox<>(); // 指定 T 为 IntegerintBox.set(42); // OK}}

以上案例也可以解答为什么不建议使用原生类型(不带类型参数的泛型类型),如使用TBox时这样使用

TBox tbox = new TBox();
// 类似的还有
List lsit = new ArrayList<>();

这样泛型就没有类型检查约束、强制安全的意义了。

有参泛型

有参泛型有一个PECS法则:“Producer Extends, Consumer Super”。当你的泛型结构主要用于产出 (读取) T 类型的实例时,使用 ? extends T;当它主要用于消费 (写入) T 类型的实例时,使用 ? super T。如果既要读也要写,就不要用通配符,直接用 T。

上界通配符 ? extends T

表示“任何 T 或 T 的子类”。当你需要只从一个泛型集合中获取元素时,使用 extends。

List<? extends Number> numbers;//上界通配符可以让读取时类型安全。// 向上转型
for (Number num : numbers) { // 安全地读取为 Numbersum += num.doubleValue();
}

下界通配符 ? super T

表示“任何 T 或 T 的父类”。当你需要向一个泛型集合中添加 T 类型的元素时,使用 super。

List<? super Integer> list;// 子类可赋值给父类
list.add(Integer.valueOf(10));

PECS利用了Java的向上转型(Upcasting)和向下转型(Downcasting)的概念,算是一种高级应用和体现。

泛型总结

两个点:

  • 不要使用原生类型
  • PECS:Producer Extends, Consumer Super
http://www.dtcms.com/wzjs/523945.html

相关文章:

  • 如何做网站流量买卖seo搜索优化费用
  • 建设厅网站总经济师是干什么的江苏网站seo
  • 广东一站式网站建设费用东莞seo代理
  • 开平网站建设公司优化大师官网入口
  • 做视频网站源码最新推广赚钱的app
  • 顺平网站建设抖音推广怎么收费
  • ppt超链接网站怎么做qq群怎么优化排名靠前
  • 彩票网站上的走势图是怎么做的网站建设 网站制作
  • 正定网站制作四川二级站seo整站优化排名
  • 政府网站建设的基本原则全国教育培训机构平台
  • 个人备案可以做盈利网站吗网站推广营销
  • html5移动网站制作什么时候网络推广
  • 网站建设建站流程方案查域名备案信息查询
  • mysql asp网站开发苏州关键词优化软件
  • 做网站可以用什么语言站长之家ping检测
  • 眼镜厂官网信阳seo公司
  • 大连网站建设招标seo是什么服务器
  • 做APP好还是建设网站好廊坊seo网络推广
  • 政府做网站线下推广活动策划方案
  • 宁远做网站msoer最简单的营销方案
  • 吾爱网站优化网站打开速度
  • 只做移动端的网站app推广拉新一手渠道
  • 卖机票的网站怎么做seo专员工作容易学吗
  • 淘宝这种网站怎么做的?哪里可以代写软文
  • 网上有做任务赚钱的网站aso优化前景
  • 免费做威客的网站口碑营销成功案例
  • wordpress文章添加回目录宁波seo服务推广
  • 深圳网站建设 手机网站建设bt磁力猪
  • 网站建设的客户都在哪里如何做网站搜索引擎优化
  • 网站建设全过程公司产品推广方案