Thank you for the excellent question.
1. How does JPlus handle null safety in Java library interfaces?
-
JPlus is currently implemented at the MVP level. Therefore, all Java library interfaces are treated as non-null by default. As a result, developers need to manually check for nullability when interacting with Java libraries.
-
When referencing Java library objects, always declare the variables as nullable (
type?) and use the null-safe operator (?.) when accessing them to prevent null pointer exceptions (NPEs). -
In future implementations, we plan to leverage nullability annotations in Java library code to add null-checking logic. However, since not all Java libraries include such annotations, developers will still need to manually handle null checks. The same applies to Kotlin: platform types are used, so developers are responsible for performing null checks.
2. If nullability information is a type metadata extension for compile-time checking, does that inevitably break on library interfaces when I create both library and consuming app with JPlus?
-
In the current JPlus MVP, when converting to Java code, nullability information specified in the JPlus files is not converted into
@Nullable/@Nonnullannotations. -
Therefore, using static analysis tools that rely on these annotations may cause issues at compile time.
-
This feature will be supported in the next version, which will include conversion to
@Nullable/@Nonnull. Thank you for your valuable feedback.
Finally, for faster responses, please post any future questions on the JPlus GitHub Discussions page: https://github.com/nieuwmijnleven/JPlus/discussions.