用泛型构建复杂容器模型
来源:互联网 发布:web 关联数据库 编辑:程序博客网 时间:2024/05/22 03:16
泛型的一个重要好处是能够简单而安全地创建复杂的模型,比如组装多层容器时,其泛型就能保障其安全了。
代码例子:
//商品class Product{ private final int id; private String description; private double price; public Product(int id, String description, double price) { super(); this.id = id; this.description = description; this.price = price; System.out.println(toString()); } @Override public String toString() { return id+": "+description+", price: $"+price; } public void priceChange(double change) { price+=change; } //这里用静初始化不单单为方便调用,更重要的是共用这个对象减少内存开销 public static Generator<Product> generator=new Generator<Product>() { private Random random=new Random(47); @Override public Product next() { return new Product(random.nextInt(1000),"Test",Math.round(random.nextDouble()*1000.0)+0.99); } };}//货架,让其摆设多个商品@SuppressWarnings("serial")class Shelf extends ArrayList<Product>{ public Shelf(int nProducts) { //生产器工具类填充这个货架,其元素为多个Product商品 Generators.fill(this, Product.generator, nProducts); }} //走廊摆设多个货架@SuppressWarnings("serial")class Aisle extends ArrayList<Shelf>{ public Aisle(int nShelves,int nProducts) { //添加多个货架 for(int i=0;i<nShelves;i++) add(new Shelf(nProducts)); }}//商店摆设多个走量@SuppressWarnings("serial")public class Store extends ArrayList<Aisle>{ public Store(int nAisles,int nShelves,int nProducts) { //添加多个走廊 for(int i=0;i<nAisles;i++) add(new Aisle(nShelves, nProducts)); } @Override public String toString() { //用字符容器装其内容 StringBuilder builder=new StringBuilder(); for(Aisle a:this) for(Shelf s:a) for(Product p:s) { builder.append(p); builder.append("\n"); } return builder.toString(); } public static void main(String[] args) { System.out.println(new Store(2, 3, 2)); }}
运行结果:
258: Test, price:
868: Test, price:
551: Test, price:
520: Test, price:
704: Test, price:
674: Test, price:
258: Test, price:
868: Test, price:
551: Test, price:
520: Test, price:
704: Test, price:
674: Test, price:
0 0
- 用泛型构建复杂容器模型
- 从头认识java-13.5 利用泛型构建复杂模型
- Tensorflow学习精要版III---使用cifar10构建更加复杂的模型
- 复杂模型机设计
- android复杂控件倒影容器
- GDB调试STL复杂容器
- 使用cmake构建复杂源码
- 构建Memcached Docker容器
- 使用Dockerfile构建容器
- 关于复杂的cell模型
- 第一个复杂模型搭建
- 模型树------构建模型树
- 信息构建2.0模型
- GoogleSketchUp构建家庭模型
- spark构建回归模型
- 构建并发模型框架
- 模型构建问题
- LVS-DR模型构建
- Mat类的一些用法
- Code[vs]数字三角形(基础棋盘dp)
- Activiti boundrytimer 和listen结合使用学习
- 刷leetcode:Intersection of Two Linked Lists
- Android 无法识别布局文件问题解决方案
- 用泛型构建复杂容器模型
- 物联12:不同频率的电子标签
- PAT 1024. 科学计数法
- linux配置jdk以及eclipse的经验
- win8.1中ie11不能打开,打开没反应的解决办法
- 简单工厂模式StaticFactoryMethodPattern
- Swift中的willSet与didSet
- 浅谈Linux的内存管理机制
- Java学习笔记27