<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/java-8-se-optional-a-strict-approach-f7ialqmhj" -->

---
title: Java 8 SE Optional, a strict approach | daily.dev
description: A response to Stephen Colebourne's pragmatic approach to Java 8 Optional, arguing for a stricter usage pattern. While Colebourne recommends using null...
canonical: https://daily.dev/posts/java-8-se-optional-a-strict-approach-f7ialqmhj
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Java 8 SE Optional, a strict approach | daily.dev
og:description: A response to Stephen Colebourne's pragmatic approach to Java 8 Optional, arguing for a stricter usage pattern. While Colebourne recommends using null...
og:url: https://daily.dev/posts/java-8-se-optional-a-strict-approach-f7ialqmhj
og:image: https://api.daily.dev/og/posts/F7iaLQmhj.png
og:image:alt: Java 8 SE Optional, a strict approach
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Java 8 SE Optional, a strict approach

**[nipafx \(Nicolai Parlog\)](https://daily.dev/sources/nipafx)** · 13 min read · 0 upvotes · 0 comments

## Summary

A response to Stephen Colebourne's pragmatic approach to Java 8 Optional, arguing for a stricter usage pattern. While Colebourne recommends using null internally within classes and only exposing Optional via getters, the author advocates for using Optional as field types and constructor/setter parameters to eliminate null entirely. The post compares both approaches with code examples, addressing concerns around performance (profile first), serializability (solvable), convenience (use method overloading), and JavaBeans compatibility. The conclusion is that the stricter approach better leverages the type system to prevent null-related bugs with minimal downsides.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://nipafx.dev/stephen-colebourne-java-optional-strict-approach>

## Similar posts on daily.dev

- [Always Take the Option](https://daily.dev/posts/always-take-the-option-uzofjmbqt) · The Daily WTF · 1 upvotes · 0 comments
- [Non-null variable declaration in Java using instanceof patterns](https://daily.dev/posts/non-null-variable-declaration-in-java-using-instanceof-patterns-jf6lvj2g1) · RUBYLAND · 0 upvotes · 0 comments

---

Tags: [#java](https://daily.dev/tags/java), [#architecture](https://daily.dev/tags/architecture)

[View this post on daily.dev](https://daily.dev/posts/java-8-se-optional-a-strict-approach-f7ialqmhj)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Java 8 SE Optional, a strict approach","url":"https://daily.dev/posts/java-8-se-optional-a-strict-approach-f7ialqmhj","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/java-8-se-optional-a-strict-approach-f7ialqmhj"},"datePublished":"2026-03-16T08:14:28.491Z","dateModified":"2026-03-16T08:29:10.423Z","description":"A response to Stephen Colebourne's pragmatic approach to Java 8 Optional, arguing for a stricter usage pattern. While Colebourne recommends using null...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/546ff7ee064df3fe45afcfcd17e10a03?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/546ff7ee064df3fe45afcfcd17e10a03?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"nipafx (Nicolai Parlog)","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"nipafx (Nicolai Parlog)","logo":"https://media.daily.dev/image/upload/s--H_Echo_u--/f_auto,q_auto/v1773648772/logos/nipafx?_a=BAMAMiiu0","url":"https://daily.dev/sources/nipafx"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/java-8-se-optional-a-strict-approach-f7ialqmhj","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"java,architecture","timeRequired":"PT13M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"nipafx (Nicolai Parlog)","item":"https://daily.dev/sources/nipafx"},{"@type":"ListItem","position":3,"name":"Java 8 SE Optional, a strict approach"}]}
```

