this post was submitted on 06 Nov 2025
17 points (74.3% liked)
Programming
23417 readers
229 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
But there is a reason for null, its a really nice thing you can work with.... I really don't understand all the fuss about null safety, working against the language
Nulls are useful, but you can't work with them in Java. Anything can be null at any time without warning, even when you have absolutely no reason to ever allow a null. Null safety as a language feature gives you the choice to allow nulls when they make sense or guarantee a value when needed. It saves you checking for nulls in the core of your logic when you already ruled them out at the boundary and enforced it at compile time.
If you check for them in your boundary, you shouldn't check for them everywhere, only where you possibly introduce them ...
But you can't look at a method signature and instantly know who handles the null check. You need to inspect code and calls to know for sure. This will lead to paranoia, sooner or later
Null is fine if you remember to account for it everywhere.
I want to write functions that fail at compile time if called with a null object. You can use annotations to kinda do this, but they do not produce compile errors.
But you should just throw an exemption, and let the caller handle it. There is so many variations where an object is null, you can't control, or you are deep inside your own code, it should be covered by a test.
The problem is that when an project is too big and a method is called from multiple contexts it's very easy to lose track of the context where the null check has been done and where it hasn't. This leads to a lot of duplicated null checks around the project and the constant paranoia of "can this be null here?".
A much better way of doing this is using the
Optionalwhen an Object can be "null" and a direct instance where it cannot. This way, at any given context you know for absolute sure if a null check is needed or not. However, even with annotations this does not throw a compile error...This is exactly the core problem that JPlus aims to solve.