泛型的使用方式有以下几种:
public class MyGenericClass<T> {
private T value;
public void setValue(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
在上述代码中,MyGenericClass
是一个泛型类,T
是类型参数,可以在类中的属性和方法中使用。
public interface MyGenericInterface<T> {
void doSomething(T value);
}
public class MyImplementation implements MyGenericInterface<String> {
@Override
public void doSomething(String value) {
System.out.println("Doing something with " + value);
}
}
在上述代码中,MyGenericInterface
是一个泛型接口,T
是类型参数。MyImplementation
类实现了 MyGenericInterface
接口,并指定了类型参数为 String
。
public class MyGenericMethod {
public <T> void printValue(T value) {
System.out.println("Value: " + value);
}
}
在上述代码中,printValue
是一个泛型方法,<T>
是类型参数,在方法中可以使用这个类型参数。
? extends T
表示类型参数是 T
或者 T
的子类; ? super T
表示类型参数是 T
或者 T
的父类。例如: public void processList(List<? extends Number> list) {
for (Number number : list) {
// do something with number
}
}
public void addToList(List<? super Integer> list) {
list.add(1);
}
在上述代码中,processList
方法接收一个列表,其中元素的类型必须是 Number
或者 Number
的子类。addToList
方法接收一个列表,其中元素的类型必须是 Integer
或者 Integer
的父类。
以上就是泛型的几种使用方式。通过使用泛型,可以增加代码的灵活性和安全性,使得代码更加通用和易于维护。
[1]
首发博客地址: https://blog.zysicyj.top/
[2]
面试题手册: https://store.amazingmemo.com/chapterDetail/1685324709017001
[3]
系列文章地址: https://blog.zysicyj.top/categories/技术文章/后端技术/系列文章/面试题精讲/