类类型转换编译错误

时间:2015-07-13 13:20:39

标签: java collections casting compilation type-parameter

我有一个代码,有趣的是当我尝试运行main时,Intellij在make进程中抱怨(当运行javac时,而不是jit):

public class Foo {


      public static void main(String[] args) {
         RestTemplate restTemplate = new RestTemplate();
         String restEndPointUrl = "";
         Integer userId = 0;

         ResponseEntity<? extends ArrayList<Foo>> responseEntity =
            restTemplate.getForEntity(restEndPointUrl, (Class<? extends ArrayList<Foo>>) ArrayList.class, userId);
      }
   }

其中getForEntity有签名:

public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... urlVariables)

错误:

Error:(77, 94) java: inconvertible types
  required: java.lang.Class<? extends java.util.ArrayList<Foo>>
  found:    java.lang.Class<java.util.ArrayList>

java版本:1.7.0_60 实际上我想问的是与intellij无关,但它与java编译有关。有人可以清楚地解释背后的规则吗?

代码取自here

我也看了this但是它并没有告诉我很多关于泛型和类型转换工作背后的逻辑。

此外,我应该(或可以)将? extends ArrayList<Foo>? super ArrayList<Foo>类似的表达式替换为ArrayList<Foo>,同时尝试解决那些很可能存在于java中的问题认证考试?当然要学习&#34;为什么&#34;将帮助我学习我应该采取的一些方法。

0 个答案:

没有答案