<div dir="auto">Hello Amber Dev Team,<div dir="auto"><br></div><div dir="auto">I was reading about JEP 301 and it's unfortunate withdrawal [1]. I also took a look at the linked <a href="http://bugs.openjdk.org">bugs.openjdk.org</a> link [2]. There, Maurizio Cimadamore linked to some discussions on the spec experts group of this team, explaining why they decided to withdraw efforts on this JEP for the time being.</div><div dir="auto"><br></div><div dir="auto">Looking at 2 of the linked mailing list threads [3] [4] (and their subsequent links), I tried my best to understand what exactly was being explained, but failed to make sense of it. Here is the best that I could make of it.</div><div dir="auto"><br></div><div dir="auto">It seems like the original attempt failed because trying to put generics on Enums immediately caused issues with some of thetools that use enums - specifically, EnumSet and EnumMap. It seems to have something to do with raw types not playing well with these specialized collections. Maurizio explained the why of this, but my brain struggled to understand a lot of the terminology. I tried googling, but ended up with a lot more concepts that I struggled to understand. Repeat for a few hours before I got tired out.</div><div dir="auto"><br></div><div dir="auto">Key phrases that I struggled to understand from the original discussion in [3] were f-bound and well formed types. Googling the definitions to these terms felt like trying to learn integrals without knowing of derivatives or limits.</div><div dir="auto"><br></div><div dir="auto">Moving on the next discussion in [4], it seems like the issue with raw types had been resolved by picking and choosing where we wanted to apply that logic, implying that that could be controlled by the JVM or something. Again, struggled to understand what was being said, but what I could pick up on was that they had found a solution, and just wanted to know if the cost of it/the effort needed to implement it was worth the benefit.</div><div dir="auto"><br></div><div dir="auto">All of this leads me to 2 questions.</div><div dir="auto"><br></div><div dir="auto">1. Could someone help me understand some of the more confusing terminology so that I can understand what is being said in those discussions?</div><div dir="auto"><br></div><div dir="auto">2. (And perhaps this is answered already once I understand 1) What was the reason that enums weren't designed yo be generic in the first place? Did the designers avoid it because they felt it would be a bad fit?</div><div dir="auto"><br></div><div dir="auto">Thank you all for your time and patience!</div><div dir="auto">David Alayachew</div><div dir="auto"><br></div><div dir="auto">[1] = <a href="https://openjdk.org/jeps/301">https://openjdk.org/jeps/301</a></div><div dir="auto">[2] = <a href="https://bugs.openjdk.org/browse/JDK-8170351">https://bugs.openjdk.org/browse/JDK-8170351</a></div><div dir="auto">[3] = <a href="https://mail.openjdk.org/pipermail/amber-spec-experts/2017-May/000041.html">https://mail.openjdk.org/pipermail/amber-spec-experts/2017-May/000041.html</a></div><div dir="auto">[4] = <a href="https://mail.openjdk.org/pipermail/amber-spec-experts/2018-December/000876.html">https://mail.openjdk.org/pipermail/amber-spec-experts/2018-December/000876.html</a></div></div>