Java 不安全操作。。。使用-Xlint重新编译:未选中。。。我能';我似乎不明白为什么操作不安全
我读过很多关于xlint的资料,这些资料都是关于不安全操作的,很多资料都是这样说的: 您可能使用以下命令初始化了arraylist:Java 不安全操作。。。使用-Xlint重新编译:未选中。。。我能';我似乎不明白为什么操作不安全,java,arraylist,Java,Arraylist,我读过很多关于xlint的资料,这些资料都是关于不安全操作的,很多资料都是这样说的: 您可能使用以下命令初始化了arraylist: Arraylist x = new Arraylist(); 相反, List<String> x = new ArrayList<String>(); 只是为了返回单位的数组列表。我仍然不明白为什么它现在能工作,但我换了: this.getUnits(). ... 到 我想当我能够在类中访问Arraylist时,首先尝试返回该Arr
Arraylist x = new Arraylist();
相反,
List<String> x = new ArrayList<String>();
只是为了返回单位的数组列表。我仍然不明白为什么它现在能工作,但我换了:
this.getUnits(). ...
到
我想当我能够在类中访问Arraylist时,首先尝试返回该Arraylist是愚蠢的,但这仍然不能解释为什么我在尝试返回同一数组时会出错,但只能使用方法而不是引用本身。您使用了生成警告的原始类型
ArrayList
切勿将参数化类型与原始类型混合
不完全是你在问,但如果你有如下指示:
if (u < 1 || u > 23)
{
if (u == 1)
this.getUnits().add(new Grunt(this));
if (u == 2)
this.getUnits().add(new Rifleman(this));
}
这是第一件事,第二件事,使用
if(u==1){
//code
}else if(u==2) {
//code
}
而不是
if(u==1){}
if(u==2){}
因为你正在检查他们中的每一个人,即使已经有了匹配。
在您的情况下,我建议使用
switch(u)
{
case 1:
//code
break;
case 2:
//code
break;
case 3:
//code
break;
.
.
.
default:
}
如果没有这个
if(u<1 | | u>23)
Java实现这一点的方法是创建游戏类型的基类型(接口或抽象类),并将其用作通用列表类型。另一方面,泛型是java的编译时特性,因此只要您知道自己在做什么,并注意使用列表的代码的不同部分,就可以安全地忽略错误?错误到底发生在哪里?这种方法太可怕了。删除它,假装你从来没有写过这么难看的东西。。。我不知道你想做什么,但换个案子更明智。更好的是,有访客的工厂模式。如何声明units
?
if (u < 1 || u > 23)
{
if (u == 1)
this.getUnits().add(new Grunt(this));
if (u == 2)
this.getUnits().add(new Rifleman(this));
}
if (u >= 1 && u <= 23)
if(u==1){
//code
}else if(u==2) {
//code
}
if(u==1){}
if(u==2){}
switch(u)
{
case 1:
//code
break;
case 2:
//code
break;
case 3:
//code
break;
.
.
.
default:
}