当前位置: 代码迷 >> Java相关 >> 求助:急! 关于“使用了未经检查或不安全的操作”
  详细解决方案

求助:急! 关于“使用了未经检查或不安全的操作”

热度:134   发布时间:2007-05-19 10:00:00.0
求助:急! 关于“使用了未经检查或不安全的操作”
// 我的程序 UserList.java
import java.util.*;
public class UserList {
private Hashtable list=new Hashtable();
private Hashtable active=new Hashtable();

UserList(){

}

protected synchronized boolean add(String user){
if(exists(user))
return false;;
list.put(user, new MessageQueue());
touch(user);
return true;
}

protected synchronized void touch(String user){
if(exists(user))
active.put(user, new Long(System.currentTimeMillis()));

}
protected synchronized Enumeration list(){
return list.keys();

}
protected synchronized boolean drop(String user){
if(!exists(user))
return false;
list.remove(user);
active.remove(user);
return true;
}
protected boolean exists(String user){
return list.containsKey(user);

}
protected void addMessage(Message message){
Enumeration allUsers=list.keys();
while(allUsers.hasMoreElements())
addUserMessage((String)allUsers.nextElement(),message);



}
protected void addUserMessage(String user,Message message){
((MessageQueue)list.get(user)).add(message);
}
protected void resetUser(String user){
((MessageQueue)list.get(user)).reset();
}
protected Enumeration getMessage(String user){
touch(user);
return ((MessageQueue)list.get(user)).listMessages();
}
protected synchronized Enumeration inactive(int timeout){
Vector inactive=new Vector();
long now=System.currentTimeMillis();
long when=now-timeout;
Enumeration users=list.keys();
while(users.hasMoreElements()){
String user=(String) users.nextElement();
if(((Long)active.get(user)).longValue()<when){
inactive.addElement(user);
}
}
return inactive.elements();
}
}

编译时:UserList.java :使用了未经检查或不安全的操作;请使用 -Xlint:unchecked 重新编译
搜索更多相关的解决方案: 检查  

----------------解决方案--------------------------------------------------------

请那位高手能帮我看看,谢谢了


----------------解决方案--------------------------------------------------------

用泛型就没事了


----------------解决方案--------------------------------------------------------

比如

Hashtable<String,Message> sss=new Hashtable<String,Message>();

这样sss里面只能放入String为KEY,Message为VALUE的东西了

然后取出来的时候,也不需要转型了

Message m=sss.get("mm");
这样就可以了,而不需要加个括号转型,这是JDK1.5的新功能,更安全


----------------解决方案--------------------------------------------------------
我把程序改成

private Hashtable<String,MessageQueue> list=new Hashtable<String,MessageQueue> ();
private Hashtable<String,Long> active=new Hashtable<String,Long> ();

还是不行

----------------解决方案--------------------------------------------------------
很多地方都要改
包括Enumeration,Vector
----------------解决方案--------------------------------------------------------
恩 我在试试

谢谢 ~


----------------解决方案--------------------------------------------------------
问题解决了

呵呵 谢谢

我还有一个问题想请教

----------------解决方案--------------------------------------------------------

我编的这个程序 Applet 是嵌入到HTML页面中的

但我运行的时候 页面所有的控件都没显示

为什么呢


----------------解决方案--------------------------------------------------------

APPLET代码


----------------解决方案--------------------------------------------------------
  相关解决方案