Если вам нужно реализовать интерфейс как часть вашей бизнес-логики, но вы не хотите, чтобы он был общедоступным как часть ваших классов, внутренние классы контракта позволяют вам это делать.
В целом, поскольку Java нуждается в объектах для всего, что они довольно часто полезны для таких вещей, как слушатели в программировании пользовательского интерфейса, где вам нужно прослушивать несколько кнопок или других входов, вы можете добавить анонимный внутренний класс к каждому из входы вместо того, чтобы помещать большую часть if затем между единственной реализацией слушателя для кнопок или чего-либо еще.
И нет, вам не нужно их ни для чего использовать.