天气报告的简单java代码
我的家庭作业任务是找出:天气报告的简单java代码,java,multithreading,jakarta-ee,Java,Multithreading,Jakarta Ee,我的家庭作业任务是找出: 此代码的作用是什么 有哪些潜在问题 代码 ///Enum 公共枚举事件{ 龙卷风、雷雨、海啸、雨、雪、风、冷、热; 公共最终静态字符串CRITICAL=“CRITICAL”; 公共最终静态字符串SEVERE=“SEVERE”; 公共最终静态字符串MEDIUM=“MEDIUM”; 公共最终静态字符串LIGHT=“LIGHT”; 私有字符串严重性; 私有字符串位置; 公共无效设置严重性(字符串严重性){ 严重性=严重性; } 公共void集合位置(字符串位置){ 这个位
- 此代码的作用是什么
- 有哪些潜在问题
///Enum
公共枚举事件{
龙卷风、雷雨、海啸、雨、雪、风、冷、热;
公共最终静态字符串CRITICAL=“CRITICAL”;
公共最终静态字符串SEVERE=“SEVERE”;
公共最终静态字符串MEDIUM=“MEDIUM”;
公共最终静态字符串LIGHT=“LIGHT”;
私有字符串严重性;
私有字符串位置;
公共无效设置严重性(字符串严重性){
严重性=严重性;
}
公共void集合位置(字符串位置){
这个位置=位置;
}
公共字符串toString(){
在“+位置返回super.toString()+”:“+严重性+”;
}
}
///接口
公共接口IEventListener{
收到无效事件(事件);
}
///阶级
公共类EventPublisher实现IEventListener{
Map listeners=newhashmap();
@凌驾
已接收公共同步的作废事件(事件){
对于(IEventListener侦听器:listeners.get(event)){
eventReceived(event);
}
}
公共同步无效寄存器(IEventListener侦听器,事件){
集合列表=侦听器.get(事件);
if(list==null){
列表=新的LinkedList();
put(事件、列表);
}
添加(侦听器);
}
公共同步作废注销器(IEventListener侦听器,事件){
获取(事件)、删除(侦听器);
}
公共字符串toString(){
字符串ret=“”;
迭代器i=侦听器.keySet().Iterator();
while(i.hasNext()){
迭代器j=listeners.get(i.next()).Iterator();
while(j.hasNext()){
ret=ret+i.next()+“:”+j.next()+“\n”;
}
}
返回ret;
}
}
我浏览了代码,发现该代码试图生成天气报告,并根据收到的Event
对天气状况进行分类(Event
可以注册/注销)
但是,我看不出代码有任何问题。我的老师坚持认为有问题。有人能帮我吗?首先,
事件
不应该是枚举
。因为它的成员实际上是单身;通过更改一个龙卷风的严重程度,您可以更改所有龙卷风的严重程度。您应该有一个用于事件类型
的枚举,一个用于严重性
的枚举,以及一个使用它们的事件
类
然后,事件发布服务器中的地图将更改
另外,注销
方法可能引发空引用异常…查找程序中问题的最佳方法之一是运行它。事件
不应该是枚举
恶劣天气太多了!海啸是一种天气吗?我认为这更像是一场自然灾害,比如森林火灾或地震。如果你有海啸,你可以排除各种不好的东西。。。洪水、火山喷发、流星雨、世界末日……Javascript、Windows ME、丰田雅利斯、库尔斯。。
/// Enum
public enum Event {
TORNADO, THUNDERSTORM, TSUNAMI, RAIN, SNOW, WIND, COLD, HEAT;
public final static String CRITICAL = "Critical";
public final static String SEVERE = "Severe";
public final static String MEDIUM = "Medium";
public final static String LIGHT = "Light";
private String severity;
private String location;
public void setSeverity(String severity) {
this.severity = severity;
}
public void setLocation(String location) {
this.location = location;
}
public String toString() {
return super.toString() + ":" + severity + " at " + location;
}
}
///Interface
public interface IEventListener {
void eventReceived(Event event);
}
///Class
public class EventPublisher implements IEventListener {
Map<Event, Collection<IEventListener>> listeners = new HashMap<Event, Collection<IEventListener>>();
@Override
public synchronized void eventReceived(Event event) {
for (IEventListener listener : listeners.get(event)){
listener.eventReceived(event);
}
}
public synchronized void register(IEventListener listener, Event event){
Collection<IEventListener> list = listeners.get(event);
if (list == null) {
list = new LinkedList<IEventListener>();
listeners.put(event, list);
}
list.add(listener);
}
public synchronized void deregister(IEventListener listener, Event event) {
listeners.get(event).remove(listener);
}
public String toString() {
String ret = "";
Iterator<Event> i = listeners.keySet().iterator();
while (i.hasNext()) {
Iterator<IEventListener> j = listeners.get(i.next()).iterator();
while (j.hasNext()) {
ret = ret + i.next() + "::" + j.next() + "\n";
}
}
return ret;
}
}