文档章节

Guava新集合-ClassToInstanceMap

Kevin-air
 Kevin-air
发布于 2016/08/05 14:03
字数 223
阅读 32
收藏 0

ClassToInstanceMap

有的时候,你的map的key并不是一种类型,他们是很多类型,你想通过映射他们得到这种类型,guava提供了ClassToInstanceMap满足了这个目的。
  除了继承自Map接口,ClassToInstaceMap提供了方法 T getInstance(Class<T>) 和 T putInstance(Class<T>, 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<Person> 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);
    }
}

© 著作权归作者所有

共有 人打赏支持
下一篇: Guava新集合-Table
Kevin-air
粉丝 14
博文 73
码字总数 26587
作品 0
深圳
私信 提问
guava集合下四 -新的集合类型

guava中产生了jdk中没有的新集合,而且是广泛使用的,这些都能和jdk中集合框架共存,没有将这些硬结合到jdk的抽象集合。 通常,guava集合实现了jdk的接口,紧密的结合到了一起 Multiset 和传...

writeademo
2018/11/28
0
0
Guava学习笔记:Guava新集合-Table等

  Table   当我们需要多个索引的数据结构的时候,通常情况下,我们只能用这种丑陋的 Map<FirstName, Map<LastName, Person>>来实现。为此Guava提供了一个新的集合类型-Table集合类型,来...

pior
2015/04/01
0
0
Guava集合-不可变集合

JDK的Collections.unmodifiableXXX方法实现不可变集合的一些问题:   1.它用起来笨拙繁琐你不得不在每个防御性编程拷贝的地方用这个方法   2.它不安全:如果有对象reference原始的被封装...

Kevin-air
2016/08/04
12
0
Guava一些高效类的使用实践

guava是google的一个强大的工具包,目前已经更新到版本22 https://github.com/google/guava,一直有断断续续的用过一些方法,但是没有系统的撸一遍所有功能 今天参考并发编程网记录一些高效的...

zimingforever
2017/06/15
0
0
guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用

1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection API Guava Basic Utilities IO API Cache API 2,为神马选择瓜娃? 瓜娃是java API蛋糕上...

zmf
2015/09/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解决各浏览器向url中传中问参数的问题

https://www.cnblogs.com/godtrue/p/4333262.html 后台的处理代码 public static String getUrlnewName( String oldName) {String newName = "";try {String agent = inv.get......

踏破铁鞋无觅处
32分钟前
1
0
微信支付携带证书请求

package utils.wechat; import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.security.KeyStore; import javax.net.ssl.SSLContext;......

猿神出窍
40分钟前
2
0
1093 - You can't specify target table 'xxx' for update in FROM clause, Time: 0.002000s

1093 - You can't specify target table 'xxx' for update in FROM clause, Time: 0.002000s 根据结果集在b_order_copy1 表中删除 DELETE FROM b_order_copy1 WHERE Id in ( SELECT Id FRO......

lwenhao
40分钟前
1
0
JavaScriptCore全面解析

本文由云+社区发表 作者:殷源,专注移动客户端开发,微软Imagine Cup中国区特等奖获得者 JavaScript越来越多地出现在我们客户端开发的视野中,从ReactNative到JSpatch,JavaScript与客户端相...

腾讯云加社区
44分钟前
1
0
Jmeter参数的AES加密使用

在Jmeter日常实践中,大家应该都遇到过接口传参需要加密的情况。以登陆为例,用户名和密码一般都需要进行加密传输,在服务端再进行解密,这样安全系数会更高,但在使用jmeter进行接口测试的时...

程序猿拿Q
55分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部