博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaSE-17 泛型
阅读量:4357 次
发布时间:2019-06-07

本文共 2208 字,大约阅读时间需要 7 分钟。

学习要点

  • 泛型接口
  • 泛型类
  • 泛型方法
  • 多参数泛型类
  • 泛型类的继承

 

泛型的定义

允许在定义类、接口、方法时使用类型形参,类型形参将会在声明变量、创建对象或者调用方法时候动态指定。

 

泛型接口

1  定义

泛型接口就是拥有一个或多个类型参数的接口

2  语法

public interface 接口名
<类型形参>
{ 类型形参 方法名(类型形参 类型形参实例);}

3  代码示例

/** 泛型接口 */public interface IGeneric
{ public T getName(); // T类型由外部决定 public void setName(T t);// 方法参数类型有外部决定}

 

泛型类

1  定义

泛型类就是具有一个或者多个类型参数的类。

2  语法

public class 类名
<类型形参>
{ 方法名(类型形参 类型形参实例) { 方法执行体 }}

  

3  示例代码

/** 泛型类 */public class Person
implements IGeneric
{// 实现泛型接口 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
p = new Person
("张三"); System.out.println(p.getName()); }}

  

 

泛型方法

1  定义

泛型方法就是带有类型参数的方法。

泛型的声明,必须在方法的修饰符(public,static,final,abstract等)之后,返回值声明之前。方法中的类型参数作用范围只在方法中。

2  语法

修饰符
<类型形参>
返回值 方法名(不指定|类型形参|正常参数,……) { 方法体}

  

3  示例代码

/**泛型方法:判断数据类型*/public class ObjectTypeJudge {   public 
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
{ 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 子类
extends 父类
{}

  

转载于:https://www.cnblogs.com/rask/p/8254007.html

你可能感兴趣的文章
查找(二叉排序树)
查看>>
iphone UI 开发教程
查看>>
17.10.24 数据最水的一次考试
查看>>
python_SMTP and POP3
查看>>
lambda匿名函数
查看>>
js常用方法
查看>>
建造者模式
查看>>
Spring入门教程:通过MyEclipse开发第一个Spring项目
查看>>
【转】你可能不知道的Shell
查看>>
廖雪峰Java1-2程序基础-1基本结构
查看>>
golang下的grpc
查看>>
1. 自动化运维系列之Cobbler自动装机
查看>>
ASP.NET MVC Model绑定(二)
查看>>
一步一步写算法(之hash表)
查看>>
漫谈并发编程(一) - 并发简单介绍
查看>>
JDBC连接MySQL数据库及演示样例
查看>>
Beta 冲刺(1/7)
查看>>
修改 Vultr 登录密码
查看>>
CSS学习
查看>>
Centos 安装lnmp完整版
查看>>