-4

我是java新手。我想为所有实例检查一个类的一个变量。如果此变量在所有情况下都没有特定值,我将执行下一步。但我不能这样做。例如,在我的代码中,如果类 Proposition 的所有实例的类型不是“UserModelMatch”,我将执行“继续”。

 Proposition proposition=new Proposition();

      for (Proposition proposition:Proposition)

          if (!proposition.getType().equals("UserModelMatch") {
                     .....do next
            } 

 public class Propositions extends ArrayList<Proposition>{ 
    }

但是此代码检查一个命题,如果它不包含类型“UserModelNoMatch”,它将“执行下一个”。但首先,我想检查所有命题的所有类型,它们在“命题”中,然后如果有任何“UserModelMatch”,那么下一步将执行该 propgram。

4

2 回答 2

2

您需要的伪代码算法:

boolean areAllEquals = true
for each proposition do
    if type != "the value" then
        areAllEquals = false
        break
    endif
endfor
if areAllEquals then
    // all types are equals
else
    // there is at least two different types
endif

一条break语句停止父循环迭代。

于 2013-07-15T13:48:00.413 回答
1

通常:您需要维护对您正在寻找的实例的引用,然后遍历它们并检查成员资格。尝试迭代一个 Class 并不像你想象的那样工作。

此外,您需要修复损坏的代码。

Proposition proposition=new proposition();

资本化问题。命题!=命题

  for (Proposition proposition:Proposition)

不要隐藏您刚刚创建的变量。 for (Proposition p: proposition)可能是您要编写的内容,尽管我认为您通常对可以迭代的内容感到困惑。您再次需要有一个要迭代的实例列表,而不仅仅是类型的名称。

最后,使用instanceof关键字而不是反射。

于 2013-07-15T14:00:10.653 回答