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

广州市公司网站建设品牌中国500强最新排名

广州市公司网站建设品牌,中国500强最新排名,wordpress手机网站模板,新人写手适合哪个平台泛型 泛型作用泛型语法(1) 泛型类/接口(2) 泛型方法 类型参数命名习惯类型通配符&#xff08;Wildcards&#xff09;(1) 无界通配符 <?>表示“未知类型”(2) 上界通配符 <? extends T>表示“T 或 T 的子类”。(3) 下界通配符 <? super T>表示“T 或 T 的父…

泛型

  • 泛型作用
  • 泛型语法
    • (1) 泛型类/接口
    • (2) 泛型方法
  • 类型参数命名习惯
  • 类型通配符(Wildcards)
    • (1) 无界通配符 <?>表示“未知类型”
    • (2) 上界通配符 <? extends T>表示“T 或 T 的子类”。
    • (3) 下界通配符 <? super T>表示“T 或 T 的父类”。
  • 注意事项
    • 类型擦除(Type Erasure)
    • 基本类型不能用泛型
    • 静态成员不能使用类的泛型参数
    • 泛型数组的限制
  • 常见应用场景
    • 集合框架
    • 工具类
    • 回调接口
  • 总结

泛型作用

类型安全:在编译时检查类型,避免运行时类型转换错误。
代码复用:用同一套逻辑处理不同类型的数据,减少重复代码。
消除强制类型转换:编译器自动处理类型转换,代码更简洁。

泛型语法

(1) 泛型类/接口

// 定义一个泛型类
public class Box<T> {private T content;public void setContent(T content) {this.content = content;}public T getContent() {return content;}
}
// 使用示例
Box<String> stringBox = new Box<>();
stringBox.setContent("Hello");
String value = stringBox.getContent(); // 无需强制转换

(2) 泛型方法

// 定义一个泛型方法
public <T> void printArray(T[] array) {for (T element : array) {System.out.print(element + " ");}
}// 使用示例
Integer[] intArray = {1, 2, 3};
printArray(intArray); // 输出: 1 2 3String[] strArray = {"A", "B", "C"};
printArray(strArray); // 输出: A B C

类型参数命名习惯

T:Type(类型),通用的类型变量,可以代表任何类型

public interface Iterable<T> {}

E:Element(集合中的元素)

public interface Collection<E> extends Iterable<E> {}

K:Key(键)
V:Value(值)

public interface Map<K,V> {}

N:Number(数值类型)
自定义:如 < Student >也可,但推荐使用单字母大写。

类型通配符(Wildcards)

(1) 无界通配符 <?>表示“未知类型”

表示“未知类型”,常用于不需要关心具体类型的场景。

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

(2) 上界通配符 <? extends T>表示“T 或 T 的子类”。

// 接收 Number 或其子类(如 Integer, Double)
public void processNumbers(List<? extends Number> list) {for (Number num : list) {System.out.println(num.doubleValue());}
}

(3) 下界通配符 <? super T>表示“T 或 T 的父类”。

// 向集合中添加 Integer 或其父类(如 Number, Object)
public void addIntegers(List<? super Integer> list) {list.add(10);list.add(20);
}

注意事项

类型擦除(Type Erasure)

编译时行为:泛型信息在编译后会被擦除,替换为 Object 或上界类型。
运行时限制:无法获取泛型的具体类型参数。

//其中泛型类型为String,代表元素类型是Sring
List<String> list = new ArrayList<>();
if (list instanceof ArrayList<String>) { // 编译错误!无法检查泛型类型// ...
}

基本类型不能用泛型

// 错误写法
List<int> list = new ArrayList<>(); 
// 正确写法
List<Integer> list = new ArrayList<>();

静态成员不能使用类的泛型参数

public class Box<T> {// 错误写法private static T staticField; 
}

静态static 是类加载作用,即.java-->.class对象,静态成员不属于任何特定类型的实例

在Java中,泛型只是一个占位符,必须在传递类型后才能使用。类实例化时才能传递真正的类型参数
由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数时,静态方法就已经加载完成。因此,静态方法不能使用/访问泛型类中的泛型

泛型数组的限制

// 错误写法:不能直接创建泛型数组
T[] array = new T[10]; 
// 正确写法(通过强制类型转换)
T[] array = (T[]) new Object[10];

常见应用场景

集合框架

List<String> names = new ArrayList<>();
Map<Integer, String> idToName = new HashMap<>();

工具类

public class Pair<K, V> {private K key;private V value;// getter/setter...
}

回调接口

public interface Callback<T> {void onSuccess(T result);void onError(String message);
}

总结

核心目标:通过类型参数化,提高代码的复用性和安全性。

关键语法
1.泛型类:class Box { … }
2.泛型方法: void method(T param) { … }
3.通配符:<?>、<? extends T>、<? super T>

避免陷阱:类型擦除、基本类型限制、静态上下文问题。

http://www.dtcms.com/wzjs/31464.html

相关文章:

  • 江苏景禾瑜博建设工程有限公司网站东莞seo优化公司
  • 昆明网站建设SEO公司网址最新连接查询
  • 宁波网站建设怎么样下列哪些店铺适合交换友情链接
  • 太原seo团队seo点击软件哪个好用
  • 深圳网站建设品牌百度退款客服电话
  • phpcms 恢复网站网页制作网站
  • 网站制作要求国内永久免费的云服务器
  • 黑群辉做web下载网站郑州seo顾问热狗
  • 太原做网站 小程序推广赚佣金的软件排名
  • 网站建设需求规格说明书小企业广告投放平台
  • wordpress 前台发布文章seo优化软件大全
  • 建设网站需要的ftp资源班级优化大师的功能有哪些
  • 深圳移动网站建设公司营销模式有哪些 新型
  • 商城版免费网站制作湖北网站seo
  • 盐城网站制作哪家好免费二级域名注册网站有哪些
  • 山西教育平台网站建设郑州网站建设七彩科技
  • 网站开发毕业设计指导记录网页设计与制作
  • 什么网站做学校设计搜索指数查询平台
  • 摄影展板设计西安seo关键词排名优化
  • 中山 网站建设一条龙服务苹果cms永久免费全能建站程序
  • 购物类网站首页效果图网络营销广告案例
  • 永嘉网站制作哪家好seo网站优化系统
  • 长沙有什么好吃的河南平价的seo整站优化定制
  • 网页建设培训机构重庆官网seo分析
  • 高邮住房和城乡建设委员会网站自己做的网址如何推广
  • 网站出现的的问题网络营销策略
  • c 做网站开发东莞优化网站制作
  • 网站后台管理系统毕业论文百度入口的链接
  • 招牌做的好的网站网站推广是什么意思
  • 郑州企业自助建站系统网站和网页的区别