-2
public class MyClass extends Activity {
    public static final String DEFAULT_ID = "def";
    public static final LinkedHashSet<String> DEF_IDS = new LinkedHashSet<>(Arrays.asList(DEFAULT_ID));

    private boolean isDefault(String currentId) {
        Log.v(TAG,"isdefault("+currentId+") = " + DEF_IDS.contains(currentId));
        return DEF_IDS.contains(currentId);
    }
}

在日志中:

isdefault(profile0) = true

怎么回事?如果 DEF_IDS 不包含“profile0”,为什么它说它包含?

4

2 回答 2

0

错误不在您发布的代码中。以下产生预期的结果。

public static final String DEFAULT_ID = "def";
public static final LinkedHashSet<String> DEF_IDS = new LinkedHashSet<>(Arrays.asList(DEFAULT_ID));

private static boolean isDefault(String currentId) {
    return DEF_IDS.contains(currentId);
}

private void test(String def) {
    System.out.println("isDefault(" + def + ") = " + isDefault(def));
}

public void test() {
    test("def");
    test(DEFAULT_ID);
    test("NOT");
}

通过印刷

isDefault(def) = true
isDefault(def) = true
isDefault(NOT) = false
于 2015-08-20T12:48:52.643 回答
0

执行下面的代码,它给了我正确的结果。
问题似乎是您使用静态 LinkedHashSet 并且它将保留以前的值,直到您不会明确清除它,即仅初始化一次。

添加更多详细信息或关闭您的问题,因为它根本不清楚,并且不提供有关您如何准确使用此代码的完整上下文。

  public static final String DEFAULT_ID = "def";
            public static final LinkedHashSet<String> DEF_IDS = new LinkedHashSet<>(Arrays.asList(DEFAULT_ID));


        public static void main(String[] args){
            isDefault("profile0");
        } 
            private static boolean isDefault(String currentId) {
               System.out.println("isdefault("+currentId+") = " + DEF_IDS.contains(currentId));
                return DEF_IDS.contains(currentId);
            }

输出:- isdefault(profile0) = false

于 2015-08-20T12:49:05.473 回答