[JSR308] Some general questions
mahmood at MIT.EDU
Mon Jan 12 11:26:26 EST 2009
> 1) In which file of the source code can i find the implementation of
> the rules that enforce the two properties that you mentioned?
> (Are they both part of the basic checker or do they use some
Please review section 9 and review the code
InterningAnnotatedTypeFactory code. I imagine that your checker would
be similar to InterningAnnotatedTypeFactory, but without the visitor.
I would be happy to answer any specific questions you have.
> 2) When you say that only NonNull variable can be dereferenced, what
> happens in the checker when checking this piece of code?
> Integer i =somefunction(); \\somefunction can return null
> if (i==null)
> Is it because even though i can be null, the system infers that it is
> not when I dereference it (so it can be considered NonNull)[...]?
Correct. The nullness checker (and the rest too) perform a flow
sensitivity analysis for local variables to determine whether a
variable is nullable or nonnull within a given scope. In the provided
example, the false clause is guaranteed to run only if (i != null).
Please read 2.7.2 of the checker manual.
More information about the JSR308