我遇到这种语法在Java中如何推断这些Java泛型语法的返回类型?
ImmutableMap.Builder<String, Object> builder = ImmutableMap.<String, Object>builder()
在左边我可以理解生成器有两种类型的字符串和对象。但是右手版本让我感到困惑。 当我读它
- ImmutableMap.XXX // XXX应该是属性或静态方法。
- 嗯,我觉得
Immutable.<String, Object>
//为什么现在XXX是<String, Object>
,泛型类型? - 接下来,
Immutable.<String, Object>builder();
//现在,这是一个建设者()的返回类型?它会返回Immutable.<String, Object>
。建设者现在如何像独立功能一样行事。
你可以看到,我有点这个语法在Java中难住了。我如何最好地理解这些类型的语法?
一个简单的例子是,在一个单元测试,我不得不做。
expect(mockDao.findId(role, name)).andReturn(Optional.<Long>absent());
不存在()是Optinal的一个通用的静态方法,我会明白,如果它是Optional.absent(),但反而使得它Optional.<Long>absent()
Optional<Long> Optional.absent()
混淆了我一下。
任何来源,我应该考虑到我澄清这个概念的理解?
有意思的是,当方法不是泛型时,将任何泛型类型规范添加到任何方法调用显然是合法的。 '的System.out。 println(“Hello!”。 toString())' –
zapl
2014-10-28 19:41:53