java 中object[]转化为String[]的出错
Setset=abcd.keySet();ColumnName=(String[])set.toArray(newString[set.size()]);其中,set是一...
Set set = abcd.keySet();
ColumnName=(String [])set.toArray(new String[set.size()]);
其中,set是一个Set,
编译时报以下错误
警告:[unchecked] 对作为普通类型 java.util.Set 的成员的 <T>toArray(T[]) 的调用未经检查
请教各位大侠,如何修改代码,才能使编译器不报此错。
我知道是个警告,我要的就是:如何修改代码来消除警告!!!
请不要告诉我,如何设定参数,避免产生此警告。
resong27lhk兄,你的做法改为Set<Object> set = abcd.keySet();
是不可以的,你改的这行会报
“找到: java.util.Set
需要: java.util.Set<java.lang.Object>”
等 高人解答~~~ 展开
ColumnName=(String [])set.toArray(new String[set.size()]);
其中,set是一个Set,
编译时报以下错误
警告:[unchecked] 对作为普通类型 java.util.Set 的成员的 <T>toArray(T[]) 的调用未经检查
请教各位大侠,如何修改代码,才能使编译器不报此错。
我知道是个警告,我要的就是:如何修改代码来消除警告!!!
请不要告诉我,如何设定参数,避免产生此警告。
resong27lhk兄,你的做法改为Set<Object> set = abcd.keySet();
是不可以的,你改的这行会报
“找到: java.util.Set
需要: java.util.Set<java.lang.Object>”
等 高人解答~~~ 展开
展开全部
晕S,最好的办法不是加SuppressWarnings来压制,这是掩耳盗铃
这是JDK1.5以后的新功能,可以大大加强程序代码的易读性和易用性。
最好的办法是在Set的创建时显式批定Set中存贮的键值类型。
1。用法举例:
HashMap<String,Object> abcd=new HashMap<String,Object>();
Set<String> set=abcd.keySet();
String[] values=set.toArray(new String[set.size()]);
。。。
还有就是查表时用法:
Object obj= adcd.get("key");//注意看,这里没有强制类型转换了,方便多了
//同理,上面的set.Array也没了强制转换,这是跟你代码上有区别的地方。
强制类型转换在代码编译前就己经确定了,所以省去了转换的时间,代码速度更快,看起来也更清楚。
本例中,HasmMap中显式指定了,键为 String类型,value为Object类型,所以在使用的时候不需要再指定
2。用例二:
ArrayList<String> list=new ArrayList<String>();//编译前就指定了类型,尖括号括起来
list.add("1");
String tet=list.get(0);//不必强制转换,节省运行时间
3.其它包括Vector, Hashtable..... 都可以在编译前就指定类型,
自己试试吧
这是JDK1.5以后的新功能,可以大大加强程序代码的易读性和易用性。
最好的办法是在Set的创建时显式批定Set中存贮的键值类型。
1。用法举例:
HashMap<String,Object> abcd=new HashMap<String,Object>();
Set<String> set=abcd.keySet();
String[] values=set.toArray(new String[set.size()]);
。。。
还有就是查表时用法:
Object obj= adcd.get("key");//注意看,这里没有强制类型转换了,方便多了
//同理,上面的set.Array也没了强制转换,这是跟你代码上有区别的地方。
强制类型转换在代码编译前就己经确定了,所以省去了转换的时间,代码速度更快,看起来也更清楚。
本例中,HasmMap中显式指定了,键为 String类型,value为Object类型,所以在使用的时候不需要再指定
2。用例二:
ArrayList<String> list=new ArrayList<String>();//编译前就指定了类型,尖括号括起来
list.add("1");
String tet=list.get(0);//不必强制转换,节省运行时间
3.其它包括Vector, Hashtable..... 都可以在编译前就指定类型,
自己试试吧
展开全部
你有两种方法去不显示警告:
方法一:
偷懒的方法,在还有这段代码的方法上面加上一段注释:
@SuppressWarnings("unchecked")
这样,就不会检查泛型的警告,所以也就不会有显示了
例子:
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Set set = new HashSet();
@SuppressWarnings("unused")
String[] ColumnName=(String [])set.toArray(
new String[set.size()]);
}
方法二:
在Set那里改,加入必要的泛型,针对你这个的话,应该这样改:
Set<Object> set = abcd.keySet();
ColumnName=(String [])set.toArray(new String[set.size()]);
只需要对第一行加入泛型之后,第二行就不会有泛型的警告了
方法一:
偷懒的方法,在还有这段代码的方法上面加上一段注释:
@SuppressWarnings("unchecked")
这样,就不会检查泛型的警告,所以也就不会有显示了
例子:
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Set set = new HashSet();
@SuppressWarnings("unused")
String[] ColumnName=(String [])set.toArray(
new String[set.size()]);
}
方法二:
在Set那里改,加入必要的泛型,针对你这个的话,应该这样改:
Set<Object> set = abcd.keySet();
ColumnName=(String [])set.toArray(new String[set.size()]);
只需要对第一行加入泛型之后,第二行就不会有泛型的警告了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题出在第一行,
代码改为如下
Set<String> set = abcd.keySet();
ColumnName=set.toArray(new String[set.size()]);
你会发现警告跑到第一行去了,
好好研究一下,你的abcd.keySet();返回的是什么吧。
代码改为如下
Set<String> set = abcd.keySet();
ColumnName=set.toArray(new String[set.size()]);
你会发现警告跑到第一行去了,
好好研究一下,你的abcd.keySet();返回的是什么吧。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是用myeclipse的话点击左边的那个感叹符号选择最后一个就行了他会自动给你把代码加上的 或者手动加也可以(也就是一楼的方法)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只是个警告而已
可以使用SuppressWarnings("unchecked")来压制
放在方法的上面
可以使用SuppressWarnings("unchecked")来压制
放在方法的上面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询