用GXT的包,底层有这么一段代码:
    public <V extends Comparable<V>> StoreSortInfo(final ValueProvider<? super M, V> property, SortDir direction) {
      this.valueProvider = property;
      this.direction = direction;
      this.comparator = new Comparator<M>() {
        public int compare(M o1, M o2) {
          V v1 = property.getValue(o1);
          V v2 = property.getValue(o2);
          if ((v1 == null & v2 != null) || (v1 != null && v2 == null)) {
            return v1 == null ? -1 : 1;
          }
          if (v1 == null & v2 == null) {
            return 0;
          }
          return v1.compareTo(v2);
        }
      };
    }请问大家if的判断是不是错了? public int compare的这个方法是不是只返回1?

解决方案 »

  1.   

    应该没错,意思是:
    v1和v2都为null,则返回 0,意思是相等。
    v1为null,v2不为null,返回-1.
    v1不为null,v2为null,返回 1。
    都不是null的话,返回v1和v2比较结果。
      

  2.   

    没错
    ==的优先级比& 和 &&都高
      

  3.   

    ==优先级高于&和&&;
    boolean值&结果与&&结果相同。
    比较结果同一楼
      

  4.   

    ==优先级高于&和&&;
    boolean值&结果与&&结果相同。
    比较结果同一楼
      

  5.   

    ==优先级高于&和&&;
    boolean值&结果与&&结果相同。
    比较结果同一楼