'. '

HiddenBuilder

From APIDesign

(Difference between revisions)
Jump to: navigation, search
Current revision (06:45, 20 June 2016) (edit) (undo)
 
Line 3: Line 3:
An example of [[HiddenBuilder]] can be found at [[Truffle]] [[API]]. There is {{truffle|com/oracle/truffle/api/vm|PolyglotEngine.Builder}} which constructs instances of {{truffle|com/oracle/truffle/api/vm|PolyglotEngine}}, but if you look at overall [[Truffle]] [[javadoc]], the [[builder]] isn't visible in the {{truffle|com/oracle/truffle/api/vm|package-summary}} overview.
An example of [[HiddenBuilder]] can be found at [[Truffle]] [[API]]. There is {{truffle|com/oracle/truffle/api/vm|PolyglotEngine.Builder}} which constructs instances of {{truffle|com/oracle/truffle/api/vm|PolyglotEngine}}, but if you look at overall [[Truffle]] [[javadoc]], the [[builder]] isn't visible in the {{truffle|com/oracle/truffle/api/vm|package-summary}} overview.
-
[[TBD]]: Explain why.
+
The trick is to make the builder a non-static inner class (see [https://github.com/graalvm/truffle/blob/2dacd8599f40e31cb1ff2232264d664564880959/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/PolyglotEngine.java#L257 the code]) - then it isn't listed in the [[Javadoc]] classes overview.
 +
 
 +
[[Category:APIDesignPatterns]]
 +
[[Category:APIDesignPatterns:Creational]]

Current revision

HiddenBuilder is a trick that hides the builder from Javadoc of your API. It may be very handy when the builder comes with a complex (generic type) signature like in case of ResistingBuilder.

An example of HiddenBuilder can be found at Truffle API. There is PolyglotEngine.Builder which constructs instances of PolyglotEngine, but if you look at overall Truffle javadoc, the builder isn't visible in the package-summary overview.

The trick is to make the builder a non-static inner class (see the code) - then it isn't listed in the Javadoc classes overview.

Personal tools
buy