According to the SimpleDateFormat class documentation,
No, you cannot use SimpleDateFormat to handle nanoseconds.
But your premise that…
Java does not support time granularity above milliseconds in its date patterns
…is no longer true as of Java 8.
The new java.time classes support nanosecond resolution. That support includes parsing and generating nine digits of fractional second. For example, when you use the
DateTimeFormatter API, the
S pattern letter denotes a "fraction of the second" rather than "milliseconds", and it can cope with nanosecond values.
java.sql.Timestamp class also handles nanosecond resolution, but in an awkward way. Generally best to do your work inside java.time classes.