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

广州市公司网站建设品牌打开网站搜索

广州市公司网站建设品牌,打开网站搜索,高端食品品牌排行榜前十名,传统网站建设团队泛型 泛型作用泛型语法(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/296963.html

相关文章:

  • 北京网站的建设如何建立网站 个人
  • 西域数码网站建设网站建设的六个步骤
  • 专做西餐的网站引流最好的推广方法
  • 网站建设和美工中国今日新闻
  • 新开最好的传奇网站搜索引擎营销的简称是
  • 如何做自适应网站美工培训
  • 萧山工程建设有限公司网站深圳外贸网络推广
  • 如何做网页或网站seo推广需要多少钱
  • 网站开发 岗位及职责投广告的平台有哪些
  • wordpress 加备案号宁波seo网络推广主要作用
  • 电子商务公司经营范围有哪些杭州seo按天计费
  • 网站建设实训设计思想买链接
  • 灰色调网站怎样开网站
  • 做 ps pr 赚钱的 网站seo伪原创工具
  • 哪些网站可以接点私活做的广告行业怎么找客户
  • 2014做社交网站嘉兴优化公司
  • 兰州网站建设优化制作公司seo收费
  • 广告网站怎么建设发稿媒体平台
  • 做公众号的必备参考网站怎样注册一个自己的平台
  • 科技网站模板免费下载好的seo网站
  • wordpress部署到git优化排名案例
  • 传奇合成版2合1雷霆版企业seo顾问服务阿亮
  • 可以加速网页的加速器seo推广公司招商
  • 广东科技网站建设最有创意的广告语30条
  • 网站建设 徐州产品市场营销策划方案
  • 电信网站备案管理系统网站制作的基本流程
  • android 做分享的网站在线网站排名工具
  • 江苏广泽建设公司网站网站建网站建设网站
  • 专做校园购物网站电脑培训学校能学什么
  • 泉州网站制作多少钱微商软文大全