前端如何做能切换语言的网站,平台规划方案怎么写,上海开发公司,做响应式网站公司Java中的泛类 Java 的泛型#xff08;Generics#xff09;是一种语言特性#xff0c;允许你定义类、接口和方法时使用类型参数。这使得代码更具可读性和安全性#xff0c;因为编译器能够在编译时检查类型#xff0c;而不是在运行时。
泛型类
定义泛型类时#xff0c;可…Java中的泛类 Java 的泛型Generics是一种语言特性允许你定义类、接口和方法时使用类型参数。这使得代码更具可读性和安全性因为编译器能够在编译时检查类型而不是在运行时。
泛型类
定义泛型类时可以使用类型参数。例如
public class BoxT {private T content;public void setContent(T content) {this.content content;}public T getContent() {return content;}
}在这里T 是一个类型参数可以在类的任何地方使用。当你创建 Box 的实例时可以指定实际的类型参数
BoxString stringBox new Box();
stringBox.setContent(Hello);
String content stringBox.getContent();泛型方法
你还可以在方法中使用泛型。例如
public class Util {public static T void printArray(T[] array) {for (T element : array) {System.out.println(element);}}
}调用泛型方法时可以显式或隐式地指定类型参数
String[] stringArray {A, B, C};
Util.printArray(stringArray);泛型接口
接口也可以是泛型的。例如
public interface PairK, V {public K getKey();public V getValue();
}然后实现这个接口
public class OrderedPairK, V implements PairK, V {private K key;private V value;public OrderedPair(K key, V value) {this.key key;this.value value;}public K getKey() { return key; }public V getValue() { return value; }
}使用泛型接口时指定类型参数
PairString, Integer pair new OrderedPair(key, 123);通配符
Java 泛型提供了通配符用于处理泛型类型的未知类型。
无界通配符
表示可以是任何类型
public void printList(List? list) {for (Object elem : list) {System.out.println(elem);}
}有界通配符
表示类型的上下限
// 上界通配符表示类型必须是 Number 或其子类
public void processList(List? extends Number list) {// ... code ...
}// 下界通配符表示类型必须是 Integer 或其超类
public void addIntegers(List? super Integer list) {// ... code ...
}泛型的优点
类型安全在编译时进行类型检查减少了类型转换错误。重用代码通过泛型代码可以适用于多种数据类型。提高可读性泛型代码更具可读性因为它明确了使用的类型。
类型擦除
在运行时所有的泛型类型信息都会被移除这个过程称为类型擦除。编译器在编译时会进行类型检查和转换但在运行时所有的泛型类型都被转换为 Object 或其边界类型。例如
public class BoxT {private T content;public void setContent(T content) {this.content content;}public T getContent() {return content;}
}编译后
public class Box {private Object content;public void setContent(Object content) {this.content content;}public Object getContent() {return content;}
}示例
这里是一个完整的例子展示了泛型类、泛型方法和通配符
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {// 泛型类BoxString stringBox new Box();stringBox.setContent(Hello);System.out.println(stringBox.getContent());// 泛型方法ListInteger intList new ArrayList();intList.add(1);intList.add(2);Util.printList(intList);// 通配符ListNumber numberList new ArrayList();numberList.add(1);numberList.add(1.5);processList(numberList);}public static void processList(List? extends Number list) {for (Number num : list) {System.out.println(num);}}
}class BoxT {private T content;public void setContent(T content) {this.content content;}public T getContent() {return content;}
}class Util {public static T void printList(ListT list) {for (T element : list) {System.out.println(element);}}
}这个示例展示了如何使用泛型类、方法和通配符来创建类型安全和可重用的代码。