Я не уверен насчет ядра JDK, но хорошие примеры можно найти в Guava . MapMaker
- это, пожалуй, лучший пример, который я могу придумать с моей головы. Например, из документов:
ConcurrentMap<Key, Graph> graphs = new MapMaker()
.concurrencyLevel(32)
.softKeys()
.weakValues()
.expiration(30, TimeUnit.MINUTES)
.makeComputingMap(
new Function<Key, Graph>() {
public Graph apply(Key key) {
return createExpensiveGraph(key);
}
});
Да, подобные вещи могут идти вразрез с "стандартным" именованием Java, но они также могут быть очень удобочитаемыми.
Для ситуаций, когда вы возвращаете не «this», а новый объект (обычно с неизменяемыми типами), мне нравится префикс «with» - Joda Time широко использует этот шаблон. Это не шаблон строителя, а альтернативная и связанная форма построения.