1. 泛型类
1. 格式:修饰符 class 类名 <类型>{ }
。例如:public class Generic <T>{ }
。
2. 代码块举例:
public class Generic <T>{
private T t;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
public class Demo {
public static void main(String[] args) {
Generic<String> g1=new Generic<String>();//第二个String可以不写
g1.setT("张三");
System.out.println(g1.getT());//张三
Generic<Integer> g2=new Generic<>();
g2.setT(18);
System.out.println(g2.getT());//18
}
}
2. 泛型方法
1. 格式:修饰符 <类型> 返回值类型 方法名(类型, 变量名){ }
。例如:public <T> void show(T t){ }
。
2. 代码块举例:
public class Generic{
public <T> void show(T t){
System.out.println(t);
}
}
public class Demo {
public static void main(String[] args) {
Generic g=new Generic();
g.show("张三");
g.show(18);
g.show(13.14);
}
}
3. 泛型接口
1. 格式:修饰符 interface 接口名 <类型>{ }
。例如:public interface Generic<T>{ }
。
2. 代码块举例:
public interface Generic <T>{
void show(T t);
}
public class GenericImp <T> implements Generic<T> {
@Override
public void show(T t) {
System.out.println(t);
}
}
public class Demo {
public static void main(String[] args) {
Generic<String> g1=new GenericImp();
g1.show("张三");
Generic<Integer> g2=new GenericImp();
g2.show(18);
}
}
4. 类型通配符
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<?> list1=new ArrayList<Object>();
List<?> list2=new ArrayList<Number>();
List<?> list3=new ArrayList<Integer>();
List<? extends Number> list4=new ArrayList<Number>();
List<? extends Number> list5=new ArrayList<Integer>();
List<? super Number> list6=new ArrayList<Number>();
List<? super Number> list7=new ArrayList<Object>();
}
}
5. 可变参数
:先看看比较差的效果
1. 可变参数:又称参数个数可变,用作方法的形参出现,那么方法的参数个数就是可变的了。
2. 格式:修饰符 返回值类型 方法名(数据类型... 变量名){ }
。例如:public static int sum(int... a){ }
。
3. 代码块举例:
public class Demo {
public static void main(String[] args) {
System.out.println(sum(10,20,30));//60
System.out.println(sum(10,20,30,40));//100
}
public static int sum(int... a){
int sum=0;
for(int i : a){
sum+=i;
}
return sum;
}
}
6. 可变参数的使用
1. Arrays工具类中有一个静态成员方法:Arrays.asList()
,返回由指定数组支持的固定大小的列表。
2. 代码块举例:
import java.util.Arrays;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list1= Arrays.asList("hello","Java","难学");
//list.add("wordld");会报错的
//list.remove("wordld");会报错的
//list.set();不报错
System.out.println(list1);//[hello, Java, 难学]
}
}