Java 包含泛型方法签名的方法调用,如: Map buildHashMap()

今天在用Guava做cache的时候,发现guava中,有些方法会带有泛型的方法签名:

public CacheBuilder expireAfterAccess(long duration, TimeUnit unit) {
    checkState(
        expireAfterAccessNanos == UNSET_INT,
        "expireAfterAccess was already set to %s ns",
        expireAfterAccessNanos);
    checkArgument(duration >= 0, "duration cannot be negative: %s %s", duration, unit);
    this.expireAfterAccessNanos = unit.toNanos(duration);
    return this;
  }

public  LoadingCache build(
      CacheLoader loader) {
    checkWeightWithWeigher();
    return new LocalCache.LocalLoadingCache(this, loader);
  }

但是,直接使用CacheBuilder的时候,并没有直接指定K,V泛型,所以很好奇它是如何调用的,于是乎做了一个尝试:

有这么一个方法:

public  Map buildHashMap() {
        return new HashMap();
}

尝试调用它:

    @Test
    public void test() {
        Map map = this.buildHashMap();//如果你使用的是idea,点击alt+enter,会自动生成 "Map map ="这一段.
    }

换一种方式:

    @Test
    public void test() {
        Map map = this.buildHashMap();
    }
好了,可以自动补全并推断出 ,实例map的类型.




你可能感兴趣的:(Java 包含泛型方法签名的方法调用,如: Map buildHashMap())