Exporting non-public type through public API
Posted
by feelgood
on Stack Overflow
See other posts from Stack Overflow
or by feelgood
Published on 2010-04-30T13:37:03Z
Indexed on
2010/04/30
15:17 UTC
Read the original article
Hit count: 474
What if I have few factory methods returning non-public type and pairing set of methods which gives variables of this non-public type? This results with titled warning message in NetBeans.
In result public API will contain only two pairing sets of methods. The reason is to make my type hierarchy sealed (like seald classes in Scala) and allow users only instantiate these types through factory methods. So we get DSL in some sense.
For example, Schedule class represented by calendar fields' contraints. There are some types of contraints - Range, Singleton, List, FullSet - with NumberSet interface as a root. We don't want to expose these types and how Schedule interact with them. We just want the specification from the user. So we make NumberSet package-private. In class Schedule we create few factory-methods for constraints:
NumberSet singleton(int value);
NumberSet range(int form, int to);
NumberSet list(NumberSet ... components);
and some methods for creating Schedule object:
Schedule everyHour(NumberSet minutes);
Schedule everyDay(NumberSet minutes, NumberSet hours);
User can only use them in the manner:
Schedule s = Schedule.everyDay( singleton(0), list(range(10-15), singleton(8)) );
Is it bad idea?
© Stack Overflow or respective owner