title: SLS3.2.10, what's wrong about invariance here?
body: <p>Scala newbie running into a problem here: </p>
  
  <pre><code>val cache: LoadingCache[Long, String] = CacheBuilder.newBuilder()
      .maximumSize(1000)
      .expireAfterWrite(10, TimeUnit.MINUTES)
      .build(
        new CacheLoader [Long, String] {
          override def load(key: Long): String = key.toString
        })
  </code></pre>
  
  <p>And got build time error: 
      Error:(12, 11) type mismatch;
       found   : com.google.common.cache.LoadingCache[Long,String]
       required: com.google.common.cache.LoadingCache[Long,String]
       Note: Long &lt;: Long, but Java-defined trait LoadingCache is invariant in type K.
      You may wish to investigate a wildcard type such as <code>_ &lt;: Long</code>. (SLS 3.2.10)
      .build(</p>
  
  <p>What's the right fix here? Why the code is wrong? Thanks.</p>