1.泛型类或接口
类型变量放在类名或接口名的后面。
class 类名<T1, T2>
{
//类体
}
interface 接口名<T1, T2>
{
//接口体
}
public class Pair<T>
{
private T first;
private T second;
public Pair()
{
first = null;
second = null;
}
public Pair(T first, T second)
{
this.first = first;
this.second = second;
}
public T getFirst()
{
return first;
}
public T getSecond()
{
return second;
}
public void setFirst(T newValue)
{
first = newValue;
}
public void setSecond(T newValue)
{
second = newValue;
}
}
2.泛型方法
类型变量放在修饰符的后面,并在返回类型的前面。
在方法中也可以使用泛型,即方法的参数类型或返回值类型,可以用类型参数表示。
修饰符 <T> T 方法名(T a, T b)
{
//方法体
}
class ArrayAlg
{
public static <T> T getMiddle(T...a)
{
return a[a.length / 2];
}
}
4.通配符泛型类型
4.1无限定通配符
无限定通配符?
的含义为Object
类型。
class Pair<?>
{
//返回类型只能是Object对象
? getFirst()
{
//方法体
}
//只可以调用Object对象
void setFirst(?)
{
//方法体
}
}
4.2协变(Covariance)
类型参数可以使用继承自已知类型的任何子类型。
//单个约束
<? extends Employee>
//多个约束
<? extends Comparable & Serializable>
4.3逆变(Contravariance)
类型参数可以使用已知类型的任何超类型。
<? super Manager>
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/java/javalang/2514.html