Je voudrais comprendre la différence entre les types Boolean
et boolean
en Java, en particulier en ce qui concerne GWT. Je sais que les méthodes ne sont pas prises en charge mais je veux plus d'informations si elles sont disponibles.
Je ne sais pas si le facteur GWT fait une différence mais en général:
booléen est un type primitif Java alors que Booléen est un type objet/référence qui encapsule un booléen
La conversion entre des primitives et des objets comme celui-ci est connue sous le nom de boxing/unboxing.
Voici plus d'informations:
http://javaeye.wordpress.com/2008/06/17/boxing-and-unboxing-conversion/
Pourquoi vous demandez la boîte?
http://Java.Sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html
C'est assez simple et la même chose pour GWT et Java:
Donc, sauf si vous avez besoin du NULL (comme par exemple votre chargement du champ à partir de la base de données, et que vous voulez que NULL soit différent de false), restez sur booléen.
En Java, un boolean
est un littéral true
ou false
, tandis que Boolean
est un wrapper d'objet pour un boolean
.
Il y a rarement une raison d'utiliser un Boolean
sur un boolean
sauf dans les cas où une référence d'objet est requise, comme dans un List
.
Boolean
contient également la méthode statique parseBoolean(String s)
, que vous connaissez peut-être déjà.
Étant donné que Boolean peut être null, il peut être utilisé pour le chargement différé.
if(hasRoots == null){
calculateRoots();
}
Java a des types primitifs (int, booléen, float, etc.) et chaque fois que vous souhaitez les utiliser comme instance d'un objet, ils sont enveloppés dans un type de classe associé. Par exemple, les booléens sont enveloppés par des booléens, int comme entier, etc.
Il a aussi ses avantages. boolean n'a pas de méthodes d'assistance (car ce n'est pas une classe), mais Boolean en a. Donc, si vous voulez convertir une chaîne en booléen, vous pouvez essayer Boolean.valueOf ("true").
J'espère que ça t'as aidé.
boolean est un type primitif tandis que Boolean est une classe wrapper. La même chose s'applique pour (int, Integer), (long, Long) etc. Les classes wrapper "enveloppent" le type de données primitif respectif dans un objet de cette classe.
Ils sont utilisés avec les collections, car les types primitifs ne sont pas autorisés avec les collections. L'utilisation de classes wrapper vous donne également accès à de nombreuses méthodes que vous pouvez appeler sur cet objet. Par exemple. La classe wrapper de caractères a des méthodes comme:
isDigit () - pour déterminer si le caractère est un chiffre. isLower () - pour déterminer si le caractère est un alphabet minuscule. est la lettre () - pour déterminer si le caractère est un alphabet.
nous ne pouvons pas utiliser les méthodes ci-dessus si nous utilisons un type primitif par rapport à une classe wrapper.
En ce qui concerne GWT, ils sont les mêmes en GWT qu'en Java.
booléen est une primitive et booléen dans un wrapper d'objet.
Selon les documents d'émulation GWT JRE ( http://code.google.com/webtoolkit/doc/1.6/RefJreEmulation.html ) ces méthodes sont prises en charge sur le type booléen: booléen (booléen), booléen (String), parseBoolean (String), toString (boolean), valueOf (boolean), valueOf (String), booleanValue (), compareTo (Boolean), equals (Object), hashCode (), toString ()
quant à la différence entre les types d'objets booléens et booléens. Les objets booléens peuvent être dans 3 états, ce n'est donc pas exactement la même chose. Mais si cela fait une différence dans GWT (en termes de performances), je n'ai pas la moindre idée, je suppose que cela n'a pas beaucoup d'importance car le compilateur GWT optimisera le code et la plupart des opérations pourraient simplement correspondre à des opérations booléennes javascript natives.
Mais comme d'habitude: pour être certain, vous devez mesurer (et tenir compte du fait que cela peut différer selon le navigateur/la version que vous mesurez).
Le type d'objet booléen n'est normalement pas utilisé très souvent car le type natif booléen est plus naturel (vous n'avez pas besoin de vérifier la valeur null tout le temps).