Soft&#x2F;Weak&#x2F;Phantom are all useful under particular circumstances. All are specialized things that you might only use once or twice in a whole career, but they need language-level support because they&#x27;re integrated with the GC. Other languages may not have them but that reflects poorly on them if so. It&#x27;s similar to how Java GC has a lot of tweakable parameters, which seems like a bad thing until you realise that you need those options just as badly in other languages, it&#x27;s just that you don&#x27;t have them.<p>Final reference is a wart that probably wouldn&#x27;t be there if the language were designed today. But again, being source and binary compatible with code from 1995 is one of Java&#x27;s greatest strengths.