泛型类:
泛型类的定义格式;
class 类名<声明自定义泛型>
{
}
泛型注意事项:
1、在类上自定义泛型的具体数据类型是在使用该类的时候创建对象的时候确定的。
2、如果一个类在类上已经声明了自定义泛型,如果使用该类创建对象的时候没有指定泛型的具体类型,那么就是默认为Object类型。
3、在类上自定义泛型不能作用于静态的方法,如果静态的方法需要使用自定义泛型没那么需要在方式法上自己声明使用。
class text
{
public <T>T A(T o)
{
return o;
}
public <T1>T1 B(T1 o)
{
return o;
}
}
public class wu
{
public static void main(String [] args)
{
Scanner scanner = new Scanner(System.in);
text t= new text();
System.out.println(t.A(24)+" "+ t.B("fgre"));
}
}
import java.util.Scanner;
class text<T>
{
public T A(T o)
{
return o;
}
public <T> T B(T o)
{
return o;
}
}
public class wu
{
public static void main(String [] args)
{
Scanner scanner = new Scanner(System.in);
text<Integer> t= new text<Integer>();
String tt= t.B("fgre");
System.out.println(t.A(24)+" "+ tt);
}
}
泛型接口的定义格式:
interface 接口名<声明自定义泛型>
{
}
import java.util.Scanner;
interface fc<T>
{
T abc(T O);
}
class text<T> implements fc<T>
{
public T A(T o)
{
return o;
}
@Override
public T abc(T O) {
return O;
}
public <T> T B(T o)
{
return o;
}
}
public class wu
{
public static void main(String [] args)
{
Scanner scanner = new Scanner(System.in);
text<Integer> t= new text<Integer>();
String tt= t.B("fgre");
Integer in= t.abc(111);
System.out.println(t.A(24)+" "+ tt+" "+in);
}
}
泛型接口要注意的事项;
1、接口上自定义的泛型的具体数据类型是在实现一个接口的时候指定的。
2、在接口上自定义的泛型如果在实现接口的时候没有指定的具体的数据类型,那么默认为Object类型。
泛型的上下限
泛型中的通配符:?
? super Integer 只能存储Integer或者是Integer的父类。泛型的下限
? extends Number 只能存储Number或者是Number的子类。泛型的上限