java c 泛型 区别_为什么Javac会抱怨与类的类型参数无关的泛型?
为什么Javac会抱怨与类的类型参数无关的泛型?
请按顺序阅读代码中的注释,那里的问题详细信息。
为什么会发生这种差异?
如果可能,请引用JLS。import java.util.*;/**
* Suppose I have a generic class
* @param with a type argument.
*/class Generic {
// Apart from using T normally,
T paramMethod() { return null; }
// the class' interface also contains Generic Java Collections
// which are not using T, but unrelated types.
List unrelatedMethod() { return null; }}@SuppressWarnings("unused")public class Test {
// If I use the class properly (with qualified type arguments)
void properUsage() {
Generic g = new Generic();
// everything works fine.
String s = g.paramMethod();
List pos = g.unrelatedMethod();
// OK error: incompatible types: List := List
List thisShouldErrorCompile = g.unrelatedMethod();
}
// But when I use the raw type, *ALL* the generics support is gone, even the Collections'.
void rawUsage() {
// Using Generic> as the type turns fixes the warnings below.
Generic g = new Generic();
// OK error: incompatible types: String := Object
String s = g.paramMethod();
// WTF warning: unchecked conversion: List := raw List
List pos = g.unrelatedMethod();
// WTF warning: unchecked conversion: List := raw List
List thisShouldErrorCompile = g.unrelatedMethod();
}}
边注
我最初是在IntelliJ IDEA中找到这个的,但是我猜编译器与javac兼容,因为当我用下面的代码编译上面的代码时,它给出了相同的错误/警告。$ javac -version
javac 1.7.0_05$ javac Test.java -Xlint:unchecked...$ javac Test.java -Xlint:unchecked -source 1.5 -target 1.5...
java c 泛型 区别_为什么Javac会抱怨与类的类型参数无关的泛型?相关推荐
- c语言与java的最大区别_【干货!!】来看看java和c语言的一些大体区别
原标题:[干货!!]来看看java和c语言的一些大体区别 对于这两门计算机语言大多数人接触的都不是很多,一般都是到了大学的时候学计算机专业的一些同学才刚接触到c语言这么课程.刚学习的时候会感到非常的陌 ...
- java js 正则区别_对比正则表达式在JavaScript与Java中的区别
这篇文章主要介绍了JavaScript与Java正则表达式写法的区别介绍,需要的朋友可以参考下 Js验证写法:(转义符\) var str = "待验证文本"; var regul ...
- java同步异步区别_同步请求和异步请求的区别
同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的 ...
- ejb java bean的区别_关于ejb:Bean,Java Bean和Enterprise Java Bean之间的区别
本问题已经有最佳答案,请猛点这里访问. 我已经阅读了关于EJB,JavaBean的文章,但是我仍然怀疑"bean"这个词本身是什么意思呢? a)纯术语"bean" ...
- java comp env 区别_加和不加java:comp/env/前缀有什么区别?
java:comp/env是标准的J2EE环境查找规则 使用这种方式必须做一次环境名到JNDI名的映射 这种隔离使得在写程序时不必关注真正的JNDI名字 其实说白了跟把JNDI名放到配置文件里是一样的 ...
- java和netbeans区别_如果我想只使用Java中的Eclipse和Netbeans有什么区别?
可乐和百事可乐有什么区别? 好吧,它不是真的相似,但很多的差异是在定性的方式.说到Netbeans 6.1和6.5: > Netbeans有一个非常不同的UI和工作流.没有观点,但工具栏等将自动 ...
- c和java内存泄漏区别_内存溢出和内存泄漏的区别(转)
1.1内存溢出:(Out Of Memory---OOM) 系统已经不能再分配出你所需要的空间,比如你需要100M的空间,系统只剩90M了,这就叫内存溢出 例子:一个盘子用尽各种方法只能装4个果子,你 ...
- java 与.net区别_.net和java区别
1..net是语言无关,java是平台无关 .net是个平台,技术平台,如果你的电脑是微软的,基本要装.net的框架,不然有些程序无法打开: java也一样,要装个虚拟机,不然系统无法识别. 但是不同 ...
- java https http 区别_关于HTTP和HTTPS的区别
前言: 在URL前加https://前缀表明是用SSL加密的.你的电脑与服务器之间收发的信息传输将更加安,Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定. http和 ...
- java pair map区别_关于map和pair
map&pair相关用法 tips:map是一个关联容器,而pair是一个数据的模板类型,两者其实并不属于同一类,但是放在一起,方便记忆理解 map 1,map简介 map是STL的一个关联容 ...
最新文章
- Java凝视Override、Deprecated、SuppressWarnings具体解释
- IIS部署ArcGIS JS API4.10后,字体未加载加载字体跨域
- 【ElasticSearch】ElasticSearch-SQL插件
- 蓝桥杯历届试题 剪格子 (DFS)
- 深度linux安装postgresql_在 Linux 上安装 PostgreSQL
- oracle 10g 报错:ORA-00257: archiver error. Connect internal only, until freed
- java下载文件夹_java如何通过共享目录下载文件夹(有子文件夹)到本地目录?...
- “根本就不需要 Kafka 这样的大型分布式系统!”
- 监督学习 | 朴素贝叶斯原理及Python实现
- Double类型比较大小
- Git使用出现git@github.com: Permission denied (publickey)
- codeforces#253 D - Andrey and Problem里的数学知识
- 乌龟Git clone失败错误码128解决办法
- intptr java_[转载]C#中int和IntPtr相互转换
- \t\tASE产生排名除使用identity外另外的方式(转载)
- iPad 被锁死后如何恢复出厂设置
- 解决jupyter notebook :No module named ‘tensorflow‘ 及python.exe无法找到入口问题及500 : Internal Server Error
- HTML+CSS美食静态网页设计
- 精读《Spring 概念》
- 搭建一个网站的成本?