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

标签 java if-statement

我是 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/

相关文章:

java - Android 服务不能作为单例运行

java - 将记录保存在 json 中附加它们并解析

java - 如何只从文件中读取相关信息而忽略其他所有信息?

javascript - jQuery insideWidth 无法与 } else { 一起使用而不进行页面刷新

java - 如何从线程更新黑莓 UI 项目?

java - 如何从 Android 上的 https url 获取 xml?

javascript - 在 Javascript 中使用三元运算符

python - 与 Python 相对,用于 ... else

excel - 如何在Excel函数中引用 "#VALUE!"

javascript - JS 和其他语言的较短比较