wordpress nginx 安全,优化网页设计是什么,博罗县建设局网站,英文网站建设模板在 Java 泛型中#xff0c;T、E、K、V、? 是常见的占位符符号#xff0c;它们本质上没有区别#xff0c;只是命名习惯不同#xff0c;用于提高代码可读性。以下是详细解释和案例#xff1a; 一、符号的常见含义
符号典型用途示例场景T通用类型#xff08;Type#xff…在 Java 泛型中T、E、K、V、? 是常见的占位符符号它们本质上没有区别只是命名习惯不同用于提高代码可读性。以下是详细解释和案例 一、符号的常见含义
符号典型用途示例场景T通用类型Type泛型类、泛型方法的通用类型占位符E集合元素Element集合类如 ListE、SetEK键Key键值对中的键如 MapK, VV值Value键值对中的值如 MapK, V?通配符Wildcard表示未知类型如 List? 二、具体案例解析
1. T通用类型
用途表示任意类型常见于泛型类或泛型方法。示例定义一个泛型类 BoxT可以存放任意类型的对象。public class BoxT {private T content;public void setContent(T content) {this.content content;}public T getContent() {return content;}
}// 使用示例
BoxString stringBox new Box();
stringBox.setContent(Hello);
BoxInteger intBox new Box();
intBox.setContent(100);2. E集合元素
用途表示集合中的元素类型常见于集合类。示例自定义一个简单的集合类 MyListE。public class MyListE {private E[] elements;public void add(E element) { /* 添加元素 */ }public E get(int index) { /* 获取元素 */ }
}// 使用示例
MyListString list new MyList();
list.add(Java);
String element list.get(0);3. K 和 V键值对
用途表示键值对的键和值类型常见于 Map 类。示例自定义一个泛型键值对类 PairK, V。public class PairK, 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; }
}// 使用示例
PairString, Integer pair new Pair(Age, 25);
String key pair.getKey(); // Age
int value pair.getValue(); // 254. ?通配符
用途表示未知类型常用于泛型方法的参数或返回值。示例编写一个方法打印任意类型集合的内容。public void printList(List? list) {for (Object item : list) {System.out.println(item);}
}// 使用示例
ListString strings Arrays.asList(A, B, C);
ListInteger numbers Arrays.asList(1, 2, 3);
printList(strings); // 输出 A, B, C
printList(numbers); // 输出 1, 2, 3三、通配符 ? 的进阶用法
1. 上界通配符 ? extends T
用途表示类型是 T 或其子类。示例处理数字集合如 Integer、Double。public double sum(List? extends Number numbers) {double sum 0;for (Number num : numbers) {sum num.doubleValue();}return sum;
}// 使用示例
ListInteger integers Arrays.asList(1, 2, 3);
ListDouble doubles Arrays.asList(1.1, 2.2, 3.3);
System.out.println(sum(integers)); // 6.0
System.out.println(sum(doubles)); // 6.62. 下界通配符 ? super T
用途表示类型是 T 或其父类。示例向集合中添加 T 类型的元素。public void addNumbers(List? super Integer list) {list.add(1);list.add(2);
}// 使用示例
ListNumber numbers new ArrayList();
addNumbers(numbers); // 可以添加 Integer 到 Number 集合四、符号的命名习惯总结
符号含义典型场景T通用类型泛型类、泛型方法E集合元素ListE、SetEK键MapK, VV值MapK, V?未知类型通配符泛型参数中的灵活类型处理 五、注意事项 符号可自定义 你可以使用其他字母如 A、B但遵循习惯能提高代码可读性。 public class MyGenericA, B { /* ... */ } // 合法但不推荐通配符 ? 的限制 不能直接实例化泛型类型List? list new ArrayList?(); ❌正确写法List? list new ArrayList(); ✅ 类型擦除 泛型信息在编译后会被擦除运行时无法获取具体类型如 T 的实际类型。 通过以上案例可以清晰理解不同符号的用途和区别