草庐IT

lv_switch

全部标签

java - 我们可以在 Java 的同一 switch 语句中的另一个 case 中调用 "case"吗?

我的意图是在同一个switch语句中调用另一个case中的两个case,switch(orderType){case1:statement1;break;case2:statement2;break;case3:**callcase1;****Callcase2;**break;default:break;`}我们可以用Java实现吗? 最佳答案 不,您不能跳转到另一个switchcase中的代码片段。但是,您可以将代码提取到一个可以从另一个案例中调用的自己的方法中:switch(orderType){case1:someMetho

java - 没有 switch 语句的 Java 工厂

我正在尝试构建一个工厂对象,但无法找到在Java中执行此操作的好方法。我正在编写的应用程序用于处理各种格式的文件,因此有一个CodecInterface适用于所有用于读取和写入文件的类。让我们假设它定义了以下方法。这些文件中的每一个都有一个唯一的人为指定的ID字符串,用于识别编码器\解码器。Stringread();voidwrite(Stringdata);StringgetID();工厂类将有一个create方法,用于创建这些编解码器类的实例。我想方法签名看起来像这样。staticCodecInterfaceCodecFactory.create(Stringfilename,St

java - 可以在 switch 语句中使用 throw 代替 break 吗?

不使用break关键字也可以使用throw退出switch语句吗?为什么使用throw而不是break?switch(number){case1:thrownewRuntimeException("Exceptionnumber1");case2:thrownewRuntimeException("Exceptionnumber2");} 最佳答案 有两种情况可以使用throw来中断switch的流程:流量控制;一般来说,这是一种不好的做法-您不希望异常行为决定您的程序决定下一步去哪里。不太可能但似是而非的默认情况;以防您遇到达到默

【C++练级之路】【Lv.10】【STL】priority_queue类和反向迭代器的模拟实现

快乐的流畅:个人主页个人专栏:《C语言》《数据结构世界》《进击的C++》远方有一堆篝火,在为久候之人燃烧!文章目录一、仿函数1.1仿函数的介绍1.2仿函数的优势二、priority_queue2.1push2.2pop2.3top2.4size2.5empty三、反向迭代器3.1成员变量与默认成员函数3.2operator*3.3operator->3.4operator++3.5operator--3.6relationaloperators四、反向迭代器的适用4.1vector4.1.1rbegin4.1.2rend4.2list4.2.1rbegin4.2.2rend总结一、仿函数1.1

Java - switch case,多个case调用同一个函数

由于我有多个应该以相同方式处理的String案例,我尝试了:switch(str){//compilererrorcase"apple","orange","pieapple":handleFruit();break;}但是我得到一个编译器错误。我是否必须在Java中逐个调用相同的函数:switch(str){case"apple":handleFruit();break;//repeatabovethingforeachfruit...}没有更简单的样式吗? 最佳答案 你必须像这样为每个字符串使用case关键字:switch(st

java - 在 switch-case 语句中使用枚举的序数值

对于我的项目,我使用枚举,我需要实现switch-case语句,其中检查特定枚举值的序号,如下所示:switch(variable){caseMyEnum.A.ordinal():returntrue;caseMyEnum.B.ordinal():returntrue;default:returnfalse;}注意:返回值只是一个例子。不幸的是,Eclipse(我使用的是1.6JDK)给出了我的编译错误“case表达式必须是常量表达式”。我应该怎么办?除了静态查找表,还有其他方法吗,在此处描述:Convertfromenumordinaltoenumtype?

java - Java 中 Switch Case 的替代方案

除了看起来不太好的ifelse之外,是否有任何其他方法可以在Java中实现switchcase。一组值组合在一起,根据选择执行相应的方法。 最佳答案 如果您的代码周围有大量switch/case语句,它们会让您发疯。您可以选择重构:Replaceconditionalwithpolymorphism.假设您有一个用于将信息保存到不同设备的软件:定义了4个持久性操作:获取、保存、删除、更新,其中可以通过N种持久化机制(平面文件、网络、RDBMS、XML等)来实现。你的代码必须支持它们,所以在4个不同的地方你有这个:之前classYou

java - 用 java lambdas 重构一个 switch case

我正在尝试重构遗留代码,在这种情况下,我有一大块switchcase来决定要执行的命令switch(operation)caseaddition:returnadd(inta,Stringb,Stringc);casemultiply:returnmultiply(inta,intb);casesubstract:returnsubstract(inta,intb);方法1:使用多态性publicinterfaceOperation{voidperformOperation(inta,intb);}然后用可用的实现填充映射:Mapactions=newHashMap();actions

java - 用于 Java 中 switch 的 McCabe Cyclomatic Complexity

我正在使用13个case的switch语句,每个case只有一行返回值。McCabe将其涂成红色。有没有更简单的方法来编写一个大的switch语句?阅读起来似乎并不复杂,但我不喜欢默认设置变成红色。如果其他人在我的代码上使用相同的工具并看到红色的东西,他们可能会认为我很愚蠢:-)编辑:我将不同的SQL类型映射到我自己的更抽象的类型,因此减少了类型的总数。caseTypes.TIME:returnAbstractDataType.TIME;caseTypes.TIMESTAMP:returnAbstractDataType.TIME;caseTypes.DATE:returnAbstra

java - Switch 语句给出不兼容的类型错误

我正在尝试编译,但出现此错误:enigma/Rotor.java:30:incompatibletypesfound:java.lang.Stringrequired:intswitch(name){1error为什么会出现此错误?我如何解决它?它在包装中,我似乎无法弄清楚。这是代码:Stringlabel;Rotor(){;}Rotor(Stringname){switch(name){case"B":conversion_chart=B;break;case"C":conversion_chart=C;break;case"I":conversion_chart=I;notch=N