Java常用工具类--泛型

多态与泛型:


泛型作为方法参数:

Goods类:
 

package com.imooc.generic;

public abstract class Goods {
	public abstract void sell();

}

Book类:

package com.imooc.generic;

public class Book extends Goods {

	@Override
	public void sell() {
		System.out.println("sell books");

	}

}

Shoes类:

package com.imooc.generic;

public class Shoes extends Goods {

	@Override
	public void sell() {
		System.out.println("sell shoes");

	}

}

Clothes类:

package com.imooc.generic;

public class Clothes extends Goods {

	@Override
	public void sell() {
		System.out.println("sell clothes");

	}

}

GoodsSeller类:

package com.imooc.generic;

import java.util.List;

public class GoodsSeller {
	//关键步骤
	public void sellGoods(List<? extends Goods> goods) {
		//调用集合中的遍历方法
		for (Goods g:goods) {
			g.sell();
		}
	}

}

测试代码:

package com.imooc.generic;

import java.util.ArrayList;
import java.util.List;

public class GoodsTest {

	public static void main(String[] args) {
		// 定义book相关的list
		List<Book> books = new ArrayList<Book>();
		books.add(new Book());
		books.add(new Book());

		// 定义book相关的list
		List<Clothes> clothes = new ArrayList<Clothes>();
		clothes.add(new Clothes());
		clothes.add(new Clothes());

		// 定义book相关的list
		List<Shoes> shoes = new ArrayList<Shoes>();
		shoes.add(new Shoes());
		shoes.add(new Shoes());
		
		GoodsSeller goodsSeller = new GoodsSeller();
		goodsSeller.sellGoods(books);
	}

}

输出结果:

sell books
sell books

自定义泛型:
测试代码1:

package com.imooc.generic;

//泛型类定义
public class NumGeneric<T> {
	private T num;

	public T getNum() {
		return num;
	}

	public void setNum(T num) {
		this.num = num;
	}
	
	public static void main(String[] args) {
		NumGeneric<Integer> intNum = new NumGeneric<>();
		intNum.setNum(10);
		System.out.println("Integer:"+intNum.getNum());
		
		NumGeneric<Float> floatNum = new NumGeneric<>();
		floatNum.setNum(10.0f);
		
		System.out.println("Float:"+floatNum.getNum());
	}

}

输出结果:
 

Integer:10
Float:10.0

测试代码2:
 

package com.imooc.generic;

public class TwoNumGeneric<T,X> {
	private T num1;
	private X num2;
	
	public void genNum(T num1,X num2) {
		this.num1 = num1;
		this.num2 = num2;
	}

	public T getNum1() {
		return num1;
	}

	public void setNum1(T num1) {
		this.num1 = num1;
	}

	public X getNum2() {
		return num2;
	}

	public void setNum2(X num2) {
		this.num2 = num2;
	}
	
	public static void main(String[] args) {
		TwoNumGeneric<Integer,Float> numObj = new TwoNumGeneric<>();
		numObj.genNum(25, 5.0f);
		System.out.println("num1 = "+numObj.getNum1());
		System.out.println("num2 = "+numObj.getNum2());
	}

}

输出结果:

num1 = 25
num2 = 5.0

自定义泛型方法:

 代码1:

package com.imooc.generic;

//泛型方法不一定写在泛型类里面
public class GenericMethod {
	//泛型方法
	public<T> void printValue(T t) {	
		System.out.println(t);
	}
	
	public static void main(String[] args) {
		GenericMethod gm = new GenericMethod();
		gm.printValue("hello");
		gm.printValue(1);
		gm.printValue(2.0);
		
		
	}

}

输出结果:
 

hello
1
2.0

测试2:

代码:

package com.imooc.generic;

//泛型方法不一定写在泛型类里面
public class GenericMethod {
	//泛型方法
	public<T extends Number> void printValue(T t) {	
		System.out.println(t);
	}
	
	public static void main(String[] args) {
		GenericMethod gm = new GenericMethod();
//		gm.printValue("hello");
		gm.printValue(1);
		gm.printValue(2.0);
		
		
	}

}

输出结果:

1
2.0

总结:
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值