范型的定义与使用的示例

来源:互联网 发布:剑网3捏脸数据怎么导入 编辑:程序博客网 时间:2024/06/05 03:25
import org.junit.Test;public class TestCase {/** * 范型:利用编译器实现的参数化类型,优点可以利用编译器检查限制数据类型,减少软件在运行期的错误! *    可以减少数据类型的转换麻烦。 * 范型是利用编译器实现的(假范型),在运行期间没有范型检查,利用编译器擦除实现的。 */@Test public void testShop(){//无法限制 参数 的类型!Shop petShop = new Shop();petShop.addProduct(new Food("驴打滚")); //petShop.addProduct(new Pet("龙猫"));  //Pet pet = (Pet)petShop.buy();//会发送类型转换的运行错误//利用 类型参数Pet约定了商店销售商品的类型Store<Pet> petStore = new Store<Pet>();//petStore.addProduct(new Food("驴打滚")); petStore.addProduct(new Pet("龙猫")); Pet pet = petStore.buy();//自动转换类型,类安全的转换//编译期间,提前约束数据类,避免了运行期间数据类型转换的错误String s = Store.getName("Tom", String.class);Integer n = Store.getName(5, Integer.class);System.out.println(s);System.out.println(n);}}/** * 范型类声明商店 */class Store<P>{P product;public Store() {}public void addProduct(P product){this.product = product;}public P buy(){return product;}//方法范型, 约束参数或返回值的类型public static <E> E getName(E type, Class<E> cls) {System.out.println("Call getName"); return type;}}class Shop{Object product;public Shop() {}public void addProduct(Object product){this.product = product;}public Object buy(){return product;}}

0 0
原创粉丝点击