Extract Generic types from extended Generic

后端 未结 2 476
南笙
南笙 2020-12-11 08:54

I\'m trying to refactor a class and set of subclasses where the M type does extend anything, even though we know it has to be a subclass of a certain type. That type is para

相关标签:
2条回答
  • 2020-12-11 09:25

    The problem is that K and V aren't really "repeated", at least not any more than a variable declaration and a use of that same variable are "repetition".

    The way to think of this is that you declare the generic types K and V, and then you use those declared generic types in the definition of the generic type M. So, you don't declare the generic type K or V more than once: Rather, you declare each of them once and then refer to them in a declaration of something else.

    To look at it another way, the number of generic types here is still three, namely K, V, and M. M happens to be defined in terms of K and V, but you didn't have to define M that way.


    I should add that if you are a proponent of type inference, you might view the declaration and the use of the same variable as unnecessary repetition. However, if you're accustomed to programming in Java (or C, or C++, or many, many other languages), then you're probably accustomed to declaring variables before you use them.

    0 讨论(0)
  • 2020-12-11 09:43

    If it were possible, the declaration

    public class NewParametrized<M extends SomeParametrized<K, V>> {
    

    would be ambiguous if a K or V class were defined in the same package, it would be impossible to know whether it is a type variable or a reference to the concrete class.

    0 讨论(0)
提交回复
热议问题