You've implemented them all. That was the hard part. Listing them should be easy!
How to list all known implementations of an interface is something that I'm asked a lot. I'm biased towards two ways of doing it.
By the very talented Samuel Horn af Rantzien
Java 6 brought us the Service Provider Interface (SPI) which has at its core the ServiceLoader class, responsible for loading implementations.
Java itself uses the Service Provider Interface (SPI) in many ways:
- CurrencyNameProvider
- NumberFormatProvider
- TimeZoneNameProvider
Using it is straightforward. You just have to declare all providers in a provider configuration file. In order to do so, put them in a META-INF/services/com.example.providers.CustomProvider
and the content of this file will list the existing providers:
Read the rest of the article here:
https://wasteofserver.com/java-how-to-get-all-implementations-of-an-interface/