学习任务:

视频学习

动手定义泛型方法

泛型方法即泛型在方法中的应用,泛型方法可以定义在普通类、泛型类中,一般情况泛型方法应用在普通类中,如下代码是在普通类中应用泛型方法 :

package com.pbteach.javase.oop.generictypes3;

/**
 * 数组操作通用类,使用泛型实现
 * @author 攀博课堂
 * @version v1.0
 */
public class PbArrayList {
	
	//数组用于存储各种对象
	private static Object[] objects;

	public PbArrayList(int size){
		objects = new Object[size];
	}
	
	//添加元素
	public <T> int add(T obj) {
		for(int i=0;i<objects.length;i++) {
			if(objects[i] == null) {
				//向objects存储元素
				objects[i] = obj;
				return 1;
			}
		}
		return 0;
		
	}
	
	//根据id获取元素
	public <T> T getByIndex(int index) {
		if(index>=0 && index<objects.length) {
			return (T) objects[index];
		}
		return null;
	}
	
	public static void main(String[] args) {
		PbArrayList arrayList = new PbArrayList(10);
		arrayList.<PbCourse>add(new PbCourse(101L, "攀博课堂 java面向对象编程高级篇v1.0", 20F));
		arrayList.<PbCourse>add(new PbCourse(102L, "攀博课堂 Spring Cloud 微服务开发v1.0", 50F));
		PbCourse course = arrayList.getByIndex(1);
		System.out.println(course.getCourseName());
		
		//传入学生类型
		PbArrayList studentList = new PbArrayList(10);
		studentList.<PbStudent>add(new PbStudent(101L, "传智燕青", "1759102882@qq.com"));
		studentList.<PbStudent>add(new PbStudent(102L, "攀博", "pbteach@126.com"));
		PbStudent student = studentList.getByIndex(1);
		System.out.println(student.getNickName());
	}
}

在方法的返回值前边添加了泛型定义,泛型方法的定义格式如下:

方法权限修饰 <泛型标识符1,泛型标识符2..> 返回值类型  方法名(参数列表)

下边是调用泛型方法:

PbArrayList arrayList = new PbArrayList(30);
//调用泛型方法传入具体类型
arrayList.<PbCourse>add(new PbCourse(1L, "java面向对象开发-基础篇", 20f));

即使不指定泛型的具体类型也可以执行泛型方法 ,如下代码:

//<PbCourse>可以省略,编译器可以推断出具体的类型
arrayList.add(new PbCourse(2L, "java面向对象开发-高级篇", 30f));
arrayList.add(new PbCourse(3L, "javaWeb开发", 30f));
arrayList.add(new PbCourse(4L, "javaWeb项目之攀博课堂公众号项目", 50f));
arrayList.add(new PbCourse(5L, "java分布式项目之攀博课堂在线教育平台", 50f));
arrayList.add(new PbCourse(6L, "java分布式项目之攀博课堂聚合支付平台", 50f));
//根据索引获取课程信息
PbCourse pbCourse = arrayList.getByIndex(1);
System.out.println(pbCourse);

调用add方法传入PbCourse类型,即使不指定泛型的具体类型编译器也可推断出参数的类型。

提问-攀博课堂
我要提问 不会就问,有效沟通
关注公众号,加入微信群交流提问。 攀博课堂官方公众号
问答列表,查看本知识点所有问题