Initializing an Interface?

前端 未结 2 1664
野的像风
野的像风 2020-12-16 02:09

In a current problem I am having (printing a file to a physical printer in Java) I have been running through the code like a madman trying to devour any useful missed inform

2条回答
  •  臣服心动
    2020-12-16 02:51

    The trick is to realize that you're not "creating", "instantiating", or "initializing" an interface. You are simply defining a variable as being something that you know implements that interface.

    You are essentially telling other programmers working on this code that for the rest of this method, you are only interested in the fact that myDoc is a Doc (i.e., something that satisfies the Doc interface). This can make programming simpler because the IDE's auto-complete will now only show you the methods that are defined by this interface, rather than everything that a SimpleDoc is capable of doing.

    Imagine that in the future you want to expand your functionality so that you could have different implementations of Doc depending on some input. Rather than creating the SimpleDoc explicitly, you say:

    Doc mydoc = docFactory.getByType(inputType);
    

    The docFactory can produce any type of Doc, and this method doesn't really care what kind gets instantiated, because it's going to treat it like a Doc regardless.

提交回复
热议问题