Ich denke nicht, dass dies machbar ist. Ich vermute, dass diese Funktion absichtlich in IDEs weggelassen wurde, da sie nicht so sicher verwendet werden kann wie andere Refactorings zum Entfernen nicht verwendeter XXX.
Die nicht verwendeten Deklarationen, nach denen IDEA (und AFAIK, NetBeans) suchen, gelten für private Mitglieder und lokale Variablen: Dinge, auf die auch außerhalb dieser Klasse oder dieses Bereichs nicht dynamisch zugegriffen werden kann. (Nun, zumindest ohne Dinge mit Reflection oder JVM-Hacking zu tun, die Sie nicht tun sollten.) Unabhängig davon, was externer Code mit Ihrer Bibliothek macht, werden diese Dinge nicht verwendet, da ihr Umfang begrenzt ist und die IDE kann alles sehen. Der Compiler kann dies feststellen, indem er nur Ihren Code betrachtet.
Selbst wenn Klassen keinen public
Zugriff haben, können sie dynamisch mit referenziert werden Class.forName()
, und dies geschieht tatsächlich im Live-Code. Selbst wenn sie anscheinend nicht im Code Ihres Projekts verwendet werden, können sie abhängig davon verwendet werden, was Sie oder externer Code, der Ihre Bibliothek verwendet, ausführen. Daher kann die IDE nicht garantieren, dass das Entfernen dieser Klassen das extern beobachtbare Verhalten nicht ändert.
Aus diesem Grund denke ich, dass IDEA dieses Verhalten einfach nicht bietet: Es kann den Benutzern falsche Erwartungen an die Sicherheit geben, und das Entfernen dieser Sicherheiten ist kein sicheres Refactoring.