我遇到這種語法在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