Tag: condition

停止代码,直到满足条件

如何创建一个函数或组件等,在满足条件之前停止所有正在运行的代码? 例如,与JOptionPane相同的方式,如果我有这样的例子: JOptionPane.showInputDialog(null, “Hello”, “Title”, 1); 在函数等中然后打印到控制台之后它将不会打印,直到我关闭JOptionPane。 我猜这个组件有内置的某种线程设置,但我怎么能用我自己的函数复制它? 所以说例如我想让JFrames延迟一切,直到它被关闭,所以它就像一个JOptionPane。 或者例如有一个具有多个输入的函数,这些函数已经更新,并且在内部对它进行了一些数学计算,如果它是某个值返回了一个布尔值,但是除了那些之外的其他所有内容都被暂停,直到返回真正的布尔值。 我猜测解决方案是某种线程设置,但我对Java很新,当我在过去编码时,我还没有真正使用过线程,所以我无法创建一个好的停止 – 启动/暂停 – 运行样式function系统。 有没有人有任何建议如何实现这个或更好的代码示例显示这种类型的东西工作?

麻烦制造多态失败那些开关/案例陈述

继续前面的问题( 这里和这里 ),我实现了一个基本的命令模式,创建了我的命令类并编码到一个接口,所以当使用任何命令时,调用execute()方法。 但是,我仍然发现自己无法动摇这些案例陈述:我正在读取主/决定字符串中的每个字符,字符串由随机的,重复的字符A,B,C或D组成,然后我检索相关的实现来自地图的命令并调用其execute方法。 我的设计是这样的: public interface Command { void execute(); } public class CommandA implements Command{ //implements execute() method } private Map myMap= new HashMap(); myMap.put(“A”, new CommandA); myMap.put(“B”, new CommandB); myMap.put(“C”, new CommandC); myMap.put(“D”, new CommandD); 但是,当我阅读每条指令时,我再次诉诸案例陈述: switch(instructionFromString){ case ‘A’:{myMap.get(“A”).execute(); break;} case ‘B’:{myMap.get(“B”).execute(); break;} case ‘C’:{myMap.get(“C”).execute(); break;} case ‘D’:{myMap.get(“D”).execute(); break;} 显然,在某种程度上我设法击败了多态性对案例陈述的优势。 它可能是我选择存储命令的那种数据结构吗? 它很可能是一个永久的数据结构,只需从中提取这些命令。 […]