1.案例介绍
模拟一个抽奖的操作:
可以有不同的奖池,通过泛型传递进去。
有一个抽奖的方法,随机返回一个被抽中的奖品。
2.代码实现
2.1 泛型类
import java.util.ArrayList;
import java.util.Random;
/**
* author : northcastle
* createTime:2021/10/21
* 模拟一个抽奖类 : 奖品的类型通过泛型传递进来
*/
public class Luck<T> {
private ArrayList<T> products; // 奖池,奖品类型通过泛型传递进来
public Luck() {
}
public Luck(ArrayList<T> products) {
this.products = products;
}
public ArrayList<T> getProducts() {
return products;
}
public void setProducts(ArrayList<T> products) {
this.products = products;
}
// 抽奖的方法:随机返回一个奖品
public T getProduct(){
Random random = new Random();
return products.get(random.nextInt(products.size()));
}
}
2.2 测试代码
import java.util.ArrayList;
/**
* author : northcastle
* createTime:2021/10/21
*/
public class LuckApplication {
public static void main(String[] args) {
//1.第一种奖品 : 奖金
Luck<Integer> integerLuck = new Luck<>();
ArrayList<Integer> money = new ArrayList<>();
money.add(1000);
money.add(2000);
money.add(3000);
money.add(4000);
money.add(5000);
integerLuck.setProducts(money);
for (int i = 0; i < 5; i++) {
System.out.println("第 "+i+" 次抽奖结果 : "+integerLuck.getProduct());
}
System.out.println("============");
//2.第二种奖品 : 电子产品
Luck<String> stringLuck = new Luck<>();
ArrayList<String> elec = new ArrayList<>();
elec.add("Iphone 13");
elec.add("Hua Wei MetaBook14");
elec.add("xiaomi10");
elec.add("平板电脑");
elec.add("苹果笔记本电脑");
stringLuck.setProducts(elec);
for (int i = 0; i < 5; i++) {
System.out.println("第 "+i+" 次抽奖结果 : "+stringLuck.getProduct());
}
}
}
2.3 运行结果
第 0 次抽奖结果 : 2000
第 1 次抽奖结果 : 3000
第 2 次抽奖结果 : 5000
第 3 次抽奖结果 : 5000
第 4 次抽奖结果 : 2000
============
第 0 次抽奖结果 : 平板电脑
第 1 次抽奖结果 : Hua Wei MetaBook14
第 2 次抽奖结果 : 苹果笔记本电脑
第 3 次抽奖结果 : Hua Wei MetaBook14
第 4 次抽奖结果 : xiaomi10
3.完成
Congratulations!
You are one step closer to success!