Sometimes a type cannot be constructor-injected. This can happen for multiple reasons. For example, you cannot constructor-inject an interface. You also cannot constructor-inject a type that you do not own, such as a class from an external library. In these cases, you can provide Hilt with binding information by using Hilt modules.
source: Hilt Modules
Not being able to constructor inject an interface is shown in the example below. Not being able to inject a class that you do not own can't even be shown in an example. You just can't do it because you can't even annotate the class with @Inject
. It's impossible because you don't have access to it.