当你的泛型集合需要更多的灵活性,你可以将键进行参数化而不是将容器进行参数化.然后将参数化的键提交给容器,来插入或者获取值.用泛型系统来确保值得类型与它的键相符. 我们创建一个Favorite类来模拟这种情况 public class Favorites { //不像普通的Map,它的所有键都是不同类型的.(异构) private Map<Class<?>, Object> favoties = new HashMap<Class<?>, Object>();…
1. 泛型通常用于集合,如Set和Map等.这样的用法也就限制了每个容器只能有固定数目的类型参数,一般来说,这也确实是我们想要的. 然而有的时候我们需要更多的灵活性,如数据库可以用任意多的Column,如果能以类型安全的方式访问所有Columns就好了,幸运的是 有一种方法可以很容易的做到这一点,就是将key进行参数化,见以下代码 public class Favorites { private Map<Class<?>, Object> favorites = new HashM…
1. 按值传递参数会有效率问题 默认情况下,C++向函数传入或者从函数传出对象都是按值传递(pass by value)(从C继承过来的典型特性).除非你指定其他方式,函数参数会用实际参数值的拷贝进行初始化,函数调用者会获得函数返回值的一份拷贝.这些拷贝由对象的拷贝构造函数生成.这使得按值传递(pass-by-value)变成一项昂贵的操作.举个例子,考虑下面的类继承体系(Item 7): class Person { public: Person(); // parameters omitte…