i avoir une classe MyClass
qui a deux propriétés, un de type String
et un de type long
(im en utilisant lombok avoir tout constructeur d'arguments)passant null dans le constructeur d'objet pour propriété de type long
@AllArgsConstructor
public class MyClass{
private String sth;
private long id;
//some methods
}
maintenant dans mon test classe usine je veux avoir méthode pour créer un objet de MyClass
avec String
ensemble à quelque chose et id
ensemble null
public static MyClass getMyClassWithNullId() {
return new Myclass("some string", null);
}
mais la morue ci-dessus e ne peut pas compiler: The constructor MyClass(String, null) is undefined
Pourquoi est-ce que je ne peux pas passer de null à long? (Toute valeur longue au lieu de null est correct)
EDIT: champ privé id
de MyClass a été suposed être Long
au lieu de long
, qui résout tout
Utilisez 'Long' au lieu de' long'. les primitives n'accèdent pas à la valeur null. – Eran
vous pouvez utiliser le type d'objet 'Long' au lieu du type primitif' long' comme @Eran conseillé. Mais sachez que dans les cas où vous essayez d'utiliser cette valeur longue dans une expression arithmétique, cela implique [autoboxing] (https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html), vous ' ll obtiendra 'NullPointerException'. –
@RafaelOsipov Qu'est-ce que l'autoboxing a à voir avec ça? ;) – Antoniossss