Spark Shen wrote:
Hi All:
The following behavior of RI java.util.EnumSet seems odd. Do you have any opinion on whether it is a bug of RI?

import java.util.EnumSet;
import java.util.Iterator;
public class Test {
   static enum EnumFoo {
       a, b,
   }

   public static void main(String[] args){
       EnumSet<EnumFoo> set = EnumSet.noneOf(EnumFoo.class);
       set.add(EnumFoo.a);
       Iterator<EnumFoo> iterator = set.iterator();
       iterator.next();
             set.remove(EnumFoo.a);
       iterator.remove();   (1)
       // The output value is true
       System.out.println(set.contains(EnumFoo.a));
       // The output value is 64
       System.out.println(set.size());
   }
}
IMHO, when (1) is executed, an IllegalStateException should be thrown out, since the element EnumFoo.a does not exist at the moment.
Any thoughts?

Best regards


Not very familiar with Enumset, but I think it is strange behavior caused by iterator

This test can pass on RI
void test{
        EnumSet<EnumFoo> set = EnumSet.noneOf(EnumFoo.class);
        set.add(EnumFoo.a);
        assertTrue(set.size() == 1);
        assertTrue(set.remove(EnumFoo.a));
        assertTrue(set.size() == 0);
        assertFalse(set.remove(EnumFoo.a));
        assertFalse(set.contains(EnumFoo.a));
}

Without Iterator influence, the EnumSet behave well. I think better to focus on how iterator works there.

--

Best Regards!

Jimmy, Jing Lv
China Software Development Lab, IBM

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to