相关疑难解决方法(0)

切换实例?

我有一个使用switch case for instanceofobject的问题:

例如:我的问题可以用Java重现:

if(this instanceof A)
    doA();
else if(this instanceof B)
    doB();
else if(this instanceof C)
    doC():
Run Code Online (Sandbox Code Playgroud)

如何使用switch...case

java instanceof switch-statement

249
推荐指数
14
解决办法
21万
查看次数

将许多"if else"语句转换为更清晰的方法

我的代码在这里检测是否mimeType等于某种MIME类型,如果是,它将进行某种转换

public void convertToMp3(File src, File target,String mimeType){
    if(mimeType.equals("audio/mpeg")){
        ...
    }else if(mimeType.equals("audio/wav")){
        mp3ToWav();
    }else if(mimeType.equals("audio/ogg")){
        ...
    }else if(...){
    ... //More if and else here
}
Run Code Online (Sandbox Code Playgroud)

我缩短了我的代码,因为它有很多其他if语句,什么设计模式适合删除许多ifelseif语句?

java design-patterns

111
推荐指数
3
解决办法
4万
查看次数

Java - 使用instanceof条件的其他许多if语句的替代

我有这个凌乱的代码,我真的想要清理,因为它有大约12个if if和每个if语句检查instanceof 2对象,所以类似于:if(parentObj instanceof superclass && parentObj2 instanceof superclass)

每个if语句执行不同的东西,所以我认为多态性不会让它变得更好.此外,因为这个小功能的12个不​​同的超类(大多数if语句执行1个衬里)会有点荒谬.多态无效的另一个原因是因为我无法访问父类或超类.我知道很多情况都不好,即使我从来没有真正理解为什么.在每个if语句中执行的方法不是父类,而是属于超类,因此我需要检查它们的类型,以便我可以转换它们并执行这些方法.关于如何清理它的任何想法?谢谢!

编辑:抱歉缺乏细节,我在手机上写了这个.无论如何,下面是我正在处理的一个例子.我看过战略模式,我唯一担心的是出于同样的原因,我必须创建许多不同的类,我觉得创建许多不同的对象只是为了一直执行1个衬里会有点浪费.另外在我看来,在策略设计中,我仍然需要进行许多实例检查以了解要执行的策略.无论如何,下面是一些代码:p

if (plotBlockState instanceof Sign && UpgradeBlockState instanceof Sign) {
    //do Sign Stuff
}
else if (plotBlockState instanceof Chest && UpgradeBlockState instanceof Chest) {
    //do Chest Stuff
}
else if (plotBlockState instanceof Dispenser && UpgradeBlockState instanceof Dispenser) {
    //do Dispenser Stuff
}
else if (plotBlockState instanceof Furnace && UpgradeBlockState instanceof Furnace) {
    //do Furnace Stuff
}
else if (plotBlockState instanceof BrewingStand && UpgradeBlockState instanceof BrewingStand) {
    //do Brew Stand Stuff …
Run Code Online (Sandbox Code Playgroud)

java object instanceof

2
推荐指数
1
解决办法
4501
查看次数