文章目录
泛型
1.1内容
泛型的本质就是“数据类型的参数化泛型”理解为数据类型的一个占位符
这种参数类型可以用在类、接口和方法中
类型擦除
1.2 泛型类
代码实例
//测试泛型类
//传入并不指明类型
public class fx<T>{
private T flag;
//set 方法不需要返回值 传入参数
public void setFlag(T flag){
this.flag=flag;
}
//get 方法需要返回值 不传入参数
public T getFlag(){
return this.flag;
}
public static void main(String[] args) {
//在使用该类时,传入数据类型
fx <String> fx01=new fx<>();
//获取值
fx01.setFlag("猪猪");
fx01.getFlag();
//接收值
String s1= fx01.getFlag();
System.out.printf(s1);
}
}
1.3 泛型接口
代码实例
//测试泛型接口下一步测试泛型方法
public class generic_interface {
public static void main(String[] args) {
interfance i =new interfance();
i.getName("sd1sdf");
//使用泛型接口开修饰对象
//传入类型
genertic <String> g=new interfance();
String name=g.getName("dsf");
System.out.println(g);
}
}
//定义一个接口
interface genertic<T> {
T getName(T name) ;
} ``![[A-泛型 2022-04-30 17.49.53.excalidraw]]``
//定义一个实现类
class interfance implements genertic<String>{
@Override
public String getName(String name) {
return name;
}
}
2:泛型方法
静态方法
代码示例
//测试静态方法
public class generic_method {
public static void main(String[] args) {
}
//定一一个没有返回值得的方法
public <T> void gm(T name){
System.out.println(name);
}
//定义一个有返回值的方法
public <T> T getname(T name){
return name;
}
}
非精静态方法
代码示例
public class MethodGeneric {
public <T> void setName(T name){
System.out.println(name);
}
public <T> T getName(T name){
return name;
}
public class Test3 {
public static void main(String[] args) {
MethodGeneric methodGeneric = new MethodGeneric();
methodGeneric.setName("oldlu");
methodGeneric.setName(123123);
MethodGeneric methodGeneric2 = new MethodGeneric();
String name = methodGeneric2.getName("Bjsxt");
Integer name1 = methodGeneric2.getName(123);
System.out.println(name1);
System.out.println(name);
}
2.4.2 静态方法
3:通配符
//测试通配符
public class willcard {
public static void main(String[] args) {
b b01=new b();
a <String> a01=new a<>();
a01.setA01("猪猪");
System.out.println(a01.getA01());
b01.b(a01);
}
}
class a <T>{
public T a01;
public void setA01(T a01 ){
this.a01=a01;
System.out.println(a01);
}
public T getA01(){
return this.a01;
}
}
class b {
public void b(a <?> a01){
System.out.println(a01.getA01());
}
}
哈哈多理解
至于通配符上下限定不了解。