Explain Generics Like I'm Five
Brian Kephart

Brian Kephart @briankephart

About: I play guitar and bass. Sometimes I code.

Location:
Kansas City
Joined:
Sep 15, 2017

Explain Generics Like I'm Five

Publish Date: Jun 10 '18
37 9

I often see discussion about generics, but I've never really grasped what they are. I'm a Ruby/Rails developer, and the term doesn't seem to be used in that community.

Comments 9 total

  • Meghan (she/her)
    Meghan (she/her)Jun 10, 2018

    In strictly typed languages, Generics are a way to make an abstraction like a List or Map where the type isn't directly tied to the implementation. A Set for example, has standard operations that don't change whether you have a Set of cars or DOM Elements.


    So you might set it up something like this.

    class Set<E> {
    }
    
    public E get(int index) {
        return this._innerArray[index];
    }
    
    Set<Car> mySet = new Set<>();
    
    • Brian Kephart
      Brian KephartJun 10, 2018

      That explains why I wouldn't be familiar with the concept from Ruby or Javascript, since those languages are dynamically typed to begin with. Thanks!

  • Avi Kaminetzky
    Avi KaminetzkyJun 11, 2018

    Here is a nice explanation from Scala, using the stack as an example.

    docs.scala-lang.org/tour/generic-c...

  • Alain Van Hout
    Alain Van HoutJun 11, 2018

    Everybody likes stories and adventures. You yourself like them so much, that your father drew a story book specifically for you, where the main character goes on a journey and encounters lots of new and interesting things.

    Now, you like unicorns, so the book your father drew for you has a unicorn as the main character. Your sister also really likes the story, but she prefers dragons to unicorns, so your father recreates the entire book, but with a dragon as the main character. Your best friend also really likes the story, but he'd like labrador as the main character, so your father obliges and draws yet another version of the story. Sounds like a lot of work, right?

    Well 'generics' is as if your father made single book, but left a hole on every page, in such a way that you can place a picture of your main character of choice on the back of the book (exactly where all the holes line up), and suddenly the whole story is about your main character. From now on, all you need to do is make a main character for yourself, and you can have your very own version of the story, with no effort whatsoever.

    • Martin Becker
      Martin BeckerJun 12, 2018

      I think this is the best explanation, but you might want to add how this maps to code as this is very abstracted away from code.

      • Alain Van Hout
        Alain Van HoutJun 12, 2018

        Given that this is an #explainlikeimfive post, abstracting away from the code is rather a fundamental requirement :).

        But for completeness sake: the original books would have been the UnicornBook, DragonBook and LabradorBook classes, which are nearly identical expect wherever the Unicorn, Dragon or Labrador classes (or their instances) are used. The generic equivalent would ba a Book where T can be added for whatever you like, to create e.g. Book< Unicorn > or Book< Eagle >.

        Hope that helps :-).

        • Martin Becker
          Martin BeckerJun 12, 2018

          Heh, totally get where your coming from.

    • Trina Chowdhury
      Trina ChowdhuryMay 7, 2019

      The best explanation, hands down. I'm a new developer and have been trying to understand generics for days, and no other explanation was easier to understand than this. Thank you.

Add comment