由于编译环境不同产生的两个问题(注解@Override和int与Integer的问题)

由于编译环境不同产生的两个问题(注解@Override和int与Integer的问题)

第一个问题:The method getCode() of type Code must override a superclass method(注解@Override)

第二个问题:Cannot cast from capture#6-of ? to int(int与Integer)


我们先说说出现的第一个问题,这个错误,是因为@Override注解使用错误导致

这个注解是Java5以后的元数据,也就是说,@Override注解是从jdk1.5以后才加入进来的

所以在jdk1.6之前使用该注解就会出错,如代码:


public class Code implements Codeiter{

	@Override
	public String getCode() {
		String f;
		String[] fh={"+","-","*"};
		int a,b;
		a = (int)(Math.random()*100);
		f = fh[(int)(Math.random()*3)];
		b = (int)(Math.random()*100);
		return a+f+b;
	}

}
以上代码,在jdk1.6之前就会提示你 去掉@Override注解,而在jdk1.5以后的版本中,就正确。


如果此时我们去掉这个注解也可以

但是我想,现在很少用jdk1.5了吧

比如我用的就是jdk1.8,但是也出现了这个错误

如图:


[caption id="attachment_917" align="alignnone" width="1050"]jdk编译环境错误 jdk编译环境错误[/caption]

那是因为我们选者了错误的标签卡,为这里是选者的  windows -- Preferences--java -- Complier   正常情况下显示的不是这个选项卡内容

是因为我点击了有上角的Configure Project Specific Settings  然后选择的jdk版本,这样也可以

当然你也可以在项目那里右健选择windows -- Preferences--java -- Complier 去设置


出现的第二个问题也是因为jdk的问题,java从1.5以后可以从int自动装箱Integer类,而在此之前是不行的

如我的代码:


int usercount = (int) hibernateTemplate.find(hql, username).get(0);
以上代码在jdk1.5或jdk1.5之前的版本是错误的,而在之后的版本就可以了


所以将jdk版本改为我当前的jdk1.8就可以了


出现以上两个问题是因为我在maven环境导入自己项目时发生的,就是说在创建maven项目时,默认jdk版本没有设置对

大家可以点击以下连接查看解决方法。

创建maven工程如何定义默认的jdk版本


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img