Java 类类型转换编译错误
我有一个代码,有趣的是Intellij在我尝试运行main时在make进程(运行javac,而不是jit)中抱怨:Java 类类型转换编译错误,java,collections,casting,compilation,type-parameter,Java,Collections,Casting,Compilation,Type Parameter,我有一个代码,有趣的是Intellij在我尝试运行main时在make进程(运行javac,而不是jit)中抱怨: public class Foo { public static void main(String[] args) { RestTemplate restTemplate = new RestTemplate(); String restEndPointUrl = ""; Integer userId = 0;
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);
}
}
java版本:1.7.0_60
事实上,我想问的不是intellij,而是java编译。有人能解释清楚这背后的规则吗
代码取自
我也看到了答案,但它并没有告诉我泛型和类型转换工作背后的逻辑
此外,我应该(或者可以)简单地替换
?扩展ArrayList
或?super ArrayList
喜欢使用ArrayList
的表达式,同时尝试解决java认证考试中很可能存在的此类问题?当然,学习“为什么”将有助于我学习我应该为他们采取的方法。@realpoinsist抱歉,问题已编辑。restemplate.getForEntity(restendopURL,new ArrayLisr().getClass,userId)代码>
Error:(77, 94) java: inconvertible types
required: java.lang.Class<? extends java.util.ArrayList<Foo>>
found: java.lang.Class<java.util.ArrayList>