JavaSE-17 泛型
学习要点
- 泛型接口
- 泛型类
- 泛型方法
- 多参数泛型类
- 泛型类的继承
泛型的定义
允许在定义类、接口、方法时使用类型形参,类型形参将会在声明变量、创建对象或者调用方法时候动态指定。
泛型接口
1 定义
泛型接口就是拥有一个或多个类型参数的接口
2 语法
public interface 接口名<类型形参> { 类型形参 方法名(类型形参 类型形参实例); }
3 代码示例
/** 泛型接口 */ public interface IGeneric<T> { public T getName(); // T类型由外部决定 public void setName(T t);// 方法参数类型有外部决定 }
泛型类
1 定义
泛型类就是具有一个或者多个类型参数的类。
2 语法
public class 类名<类型形参> { 方法名(类型形参 类型形参实例) { 方法执行体 } }
3 示例代码
/** 泛型类 */ public class Person<T> implements IGeneric<T> {// 实现泛型接口 private T t; public Person(T t) { this.setName(t); } @Override public T getName() { return this.t; } @Override public void setName(T t) { this.t = t; } } /** 测试类 */ public class Test { public static void main(String[] args) { IGeneric<String> p = new Person<String>("张三"); System.out.println(p.getName()); } }
泛型方法
1 定义
泛型方法就是带有类型参数的方法。
泛型的声明,必须在方法的修饰符(public,static,final,abstract等)之后,返回值声明之前。方法中的类型参数作用范围只在方法中。
2 语法
修饰符<类型形参> 返回值 方法名(不指定|类型形参|正常参数,……) { 方法体 }
3 示例代码
/**泛型方法:判断数据类型*/ public class ObjectTypeJudge { public <T> void judgeMethod(T t){ System.out.println("数据类型是:"+t.getClass());//获取类定义信息 } } /** 测试类 */ public class Test { public static void main(String[] args) { ObjectTypeJudge otj=new ObjectTypeJudge(); otj.judgeMethod(100); otj.judgeMethod("hello"); otj.judgeMethod(123.4f); otj.judgeMethod(321.23); } }
4 测试结果
上机练习
需求描述
- 定义泛型接口并添加获取字段方法,将类型参数做为此方法返回类型。
- 定义泛型类实现上述泛型接口,添加一个字段并将类型参数作为字段的类型,在构造函数中初始化此字段。
- 在main()方法中实例化泛型接口,调用获取字段方法并打印。
多参数泛型类
1 语法
例如Map常用的实现类:HashMap<K,V>属于多个参数的泛型类。
2 示例代码
/**多参数泛型类*/ public class GenericMulPara<T, V> { private T a; private V b; public GenericMulPara(T a, V b) { this.a = a; this.b = b; } public void showType() { System.out.println("a的类型是" + a.getClass().getName()); System.out.println("b的类型是" + b.getClass().getName()); } }
泛型类的继承
1 定义
- 面向对象的特性同样适用于泛型类,所以泛型类也可以被继承。
- 继承了泛型类的子类,必须也是泛型类。
2 语法
class 子类<T> extends 父类<T> { }
本博客文章未经许可,禁止转载和商业用途!
如有疑问,请联系: 2083967667@qq.com