Guava新集合-ClassToInstanceMap

有的时候,你的map的key并不是一种类型,他们是很多类型,你想通过映射他们得到这种类型,guava提供了ClassToInstanceMap满足了这个目的。 除了继承自Map接口,ClassToInstaceMap提供了方法 T getInstance(Class ) 和 T putInstance(Class , T),消除了强制类型转换。 该类有一个简单类型的参数,通常称为B,代表了map控制的上层绑定。guava提供了有用的实现, MutableClassToInstanceMap 和 ImmutableClassToInstanceMap。

示例:

import com.google.common.collect.ClassToInstanceMap; 
import com.google.common.collect.MutableClassToInstanceMap; 
import org.junit.Test; 
/** 
* @author Kevin 
* @description 
* @date 2016/8/5 
*/ 
public class ClassToInstanceMapTest { 
@Test 
public void classToInstanceMapTest() { 
ClassToInstanceMap classToInstanceMap = MutableClassToInstanceMap.create(); 
Teacher teacher = new Teacher("Kevin", 28); 
Stu stu = new Stu("Han", 1); 
classToInstanceMap.putInstance(Teacher.class, teacher); 
classToInstanceMap.putInstance(Stu.class, stu); 
System.out.println(classToInstanceMap.getInstance(Teacher.class)); 
System.out.println(classToInstanceMap.getInstance(Stu.class)); 
} 
} 
abstract class Person{ 
public String name; 
public int age; 
public Person(String name, int age) { 
this.name = name; 
this.age = age; 
} 
} 
class Teacher extends Person { 
public Teacher(String name, int age) { 
super(name, age); 
} 
} 
class Stu extends Person { 
public Stu(String name, int age) { 
super(name, age); 
} 
}

猜你喜欢

转载自blog.csdn.net/weixin_42868638/article/details/85678396