2010-12-14 13 views
1

Je crée une application gwt.J'obtiens l'erreur "Le constructeur Random() n'est pas visible" dans la méthode ci-dessous.J'ai essayé de le mettre aussi dans onModuleLoad() .Le constructeur Random() n'est pas visible

public void jump(){ 
Random generator = new Random(); 
} 

J'ai importé au hasard par les éléments suivants

import com.google.gwt.user.client.Random; 

Peu importe où je mets ce que je garde toujours obtenir cette erreur.

Merci

+0

Je l'ai eu en travaillant en important java.util.Random.But cela me semble juste faux. – james

Répondre

5

Ne l'instanciez pas. Au lieu de cela, appeler les méthodes statiques sur la classe:

Random.nextInt(...) 
+0

Merci, ça a marché – james

0

La classe com.google.gwt.user.client.Random n'a pas de constructeur public et toutes ses méthodes sont statiques. Le javadoc dit:

Cette classe peut être utilisée comme substitut de java.util.Random. La sémantique diffère en ce que l'implémentation du navigateur sous-jacent est utilisée. Le générateur aléatoire ne peut pas être ensemencé ou autrement utilisé pour reproduire une séquence particulière de résultats.

Je soupçonne que la raison de cette conception (c.-à-méthodes statiques et aucun constructeur public) est que la classe GWT Random est vraiment juste une peau pour la fonction ECMAScript Math.random(), qui est une fonction statique et qui ne peut pas être ensemencé.

Je suppose que l'utilisation de java.util.Random est une alternative, mais je ne crois pas qu'il soit capable de s'introduire à partir d'une source d'entropie côté navigateur.