1.泛型的定义格式
格式:修饰符 class 类名<类型>
eg:public class Table<T>
其中:T代表类型、E代表元素、K代表键、V代表值
public class Generic<T> {
private T t;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
public class GenericDemo {
public static void main(String[] args) {
Generic<String> g = new Generic<String>();
g.setT("persuade 说服,劝服");
System.out.println(g.getT());
Generic<Integer> g1 =new Generic<Integer>();
g1.setT(123);
System.out.println(g1.getT());
}
}
2.泛型方法
泛型方法的定义格式:
格式:修饰符 <类型> 返回值类型 方法名(类型 变量名){}
eg:public <T> void show(T t){}
public class Generic {
public <T> void show(T t){
System.out.println(t);
}
}
3.泛型接口
泛型接口定义格式:
格式:修饰符 interface 接口名 <类型>{ }
eg:public interface Generic <T>{ }
接口定义
public interface Generic<T>{
void show(T t);
}
接口实现类
public class GenericImpl<T> implements Generic<T> {
@Override
public void show(T t) {
System.out.println(t);
}
}
测试类
public class GenericDemo {
public static void main(String[] args) {
Generic<String> g = new GenericImpl<String>();
g.show("persuade 劝服");
}
}
4.类型通配符
类型通配符:<?>
List<?>:表示为元素未知的List,可以匹配到任意的类型
类型通配符上限<? extends 类型>
List<? extends Number>:表示为Number或其子类型
类型通配符上限<? Super 类型>
List<? Super Number>:表示为Number或其父类型
5.可变参数
可变参数定义格式
格式:修饰符 返回值类型 类名(数据类型 ...变量名){ }
eg:public static int sum(int ...a){ }
public class ArgsDemo {
public static void main(String[] args) {
System.out.println(sum(213,1234,123,123));
System.out.println(sum(123,124,345235,4,5645756,8));
System.out.println(sum(123,235432,346,457,56,8));
}
public static int sum(int... a){
int sum = 0;
for(int i : a){
sum += i;
}
return sum;
}
}