The order of the parameters match the order in which the fields appear in your generates a constructor with 1 parameter for each field in your class. The constructor will throw a NullPointerException if any of the parameters intended for the fields marked with contain null.
For those fields marked with an explicit null check is also generated. All non-initialized final fields get a parameter, as well as any fields that are marked as that aren't initialized where they are declared. This annotation is useful primarily in combination with either or one of the other constructor generating generates a constructor with 1 parameter for each field that requires special handling. Certain java constructs, such as hibernate and the Service Provider Interface require a no-args constructor. For fields with constraints, such as fields, no check is generated,so be aware that these constraints will generally not be fulfilled until those fields are properly initialized later. If this is not possible (because of final fields), a compiler error will result instead, unless = true) is used, then all final fields are initialized with 0 / false / null. This set of 3 annotations generate a constructor that will accept 1 parameter for certain fields, and simply assigns this parameter to the will generate a constructor with no parameters.