gpt4 book ai didi

java - 在具有多个条件的 If 情况下,我们能否获得条件失败的确切位置?

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

我是 Java 新手,这是我的代码,

if(   a.name == b.name 
&& a.displayname == b.displayname
&& a.linkname == b.linkname
......... )
return true;
else
return false;

我将调用此方法,并且必须检查对象“a”和“b”的所有属性。每个对象都有 20 多个属性。因此,如果我对每个属性都使用 if case,就会很整洁。

如果返回为 false,则会引发异常,并且我必须报告哪个属性失败。有没有简单的方法可以找到 if 情况下条件失败的位置。

请帮忙。如果您不清楚问题,请询问。

最佳答案

问题是,如果其中一个条件不满足,您是否要继续检查?您可以在有接口(interface)的情况下执行类似比较器的操作:

public interface IComparator {
boolean compare(YourObject o1, YourObject o2);
String getComparatorName();
}

接下来,您创建该接口(interface)的一组实现:

NameComparator implements IComparator {

private name="Name Comparator";

@Override
public boolean compare(YourObject o1, YourObjecto2) {
return o1.getName().equals(o2.getName());
}

@Override
public String getComparatorName() {
return name;
}
}

接下来,您将这些比较器的集合存储在 arrayList 中,然后迭代它们,并通过将它们添加到其他集合来记录失败的比较器。希望有帮助!

例如,您创建数组:

IComparator[] comparators = new IComparator[]{ new NameComparator, new DisplayNameComparator};

List<IComparator> failedComparationOperations = new ArrayList<IComparator>();

for(IComparator currentComparator : comparators) {
if(!currentComparator.compare(o1, o2)) {
failedComparationOperations.add(currentComparator);
}
}

for(IComparator currentComparator: failedComparationOperations)
{
System.out.println("Failed Comparation at: "+currentComparator.getComparatorName());
}

关于java - 在具有多个条件的 If 情况下,我们能否获得条件失败的确切位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22786977/

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