gpt4 book ai didi

java - 条件参数的紧凑 Java 语法?

转载 作者:行者123 更新时间:2023-12-01 05:56:11 24 4
gpt4 key购买 nike

处理这种情况的最佳(最紧凑)方法是什么:
方法调用的一个或多个参数取决于某些条件,而其余参数是否相同?

例如——你想

DeathRay mynewWpn = new DeathRay(particle.proton, chassisColor.BLACK, oem.ACME)

如果
enemy_composition == nature.ANTIMATTER


DeathRay mynewWpn = new DeathRay(particle.anti-proton, chassisColor.BLACK, oem.ACME)

如果
enemy_composition == nature.MATTER

显然你可以 if-else但是当有很多参数或多个条件参数时,它看起来不必要地长。我也做了这个,用 if-else 创建了一个参数事先,然后调用该方法。同样,这似乎有点笨拙。是否有某种类似于 Excel if 语句的内联语法?

最佳答案

你可以做

new DeathRay(enemy_composition == nature.ANTIMATTER ? particle.proton : particle.anti-proton, chassisColor.BLACK, oem.ACME)

……但我想我们都同意这很可怕。它还假设只有两种粒子。

这里有一些更好的选择。
switch :
particle type;
switch (enemy_composition) { /* Assuming "nature" is an enum. */
case ANTIMATTER :
type = particle.proton;
break;
case MATTER :
type = particle.antiproton;
break;
}
DeathRay mynewWpn = new DeathRay(type, chassisColor.BLACK, oem.ACME);
enum方法:

将方法添加到您的 enum , Nature .
public enum Nature
{

MATTER
{
public Particle getCounterWeapon()
{
return Particle.ANTIPROTON;
}
},
ANTIMATTER
{
public Particle getCounterWeapon()
{
return Particle.PROTON;
}
};

public abstract Particle getCounterWeapon();

}

然后使用它。
DeathRay mynewWpn = new DeathRay(enemy_composition.getCounterWeapon(), chassisColor.BLACK, oem.ACME);
Map :
particle type = counterWeapons.get(enemy_composition);
DeathRay mynewWpn = new DeathRay(type, chassisColor.BLACK, oem.ACME);

关于java - 条件参数的紧凑 Java 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3572035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com