J'ai une liste de listes de type Object qui contient les objets des classes NormalDistribution et BinomialDistribution de la bibliothèque org.apache.commons.math3. Maintenant, je veux appeler la méthode sample () sur ces objets mais, lorsque j'appelle la méthode, cela génère une erreur car sample () n'est pas défini pour l'objet. Comment puis-je le faire fonctionner sans changer le type de liste de listes (parce que je veux stocker des objets appartenant à une classe différente dans une seule liste de listes)?
ArrayList<ArrayList<Object>> distributions = new ArrayList<ArrayList<Object>>();
distributions=[[new NormalDistribution(24,10),new NormalDistribution(100,5)],[new BinomialDistribution(160,0.8)]];
for(int i=0;i<distributions.size();i++){
for(int j=0;j<distributions.get(i).size();j++){
double value = (distributions.get(i).get(j)).sample();//sample() is undefined for the Object
}
}
Voici le problème:
Les classes NormalDistribution
et BinomialDistribution
n'ont pas de superclasse commune qui a une sample()
méthode. L'un est un sous-type de RealDistribution
et l'autre est un sous-type de IntegerDistribution
. Les sample()
méthodes respectives renvoient différents types; ie double[]
et int[]
respectivement.
Donc, ce dont vous avez besoin est quelque chose comme ceci:
double sample;
if (distribution instanceof RealDistribution) {
sample = ((RealDistribution) distribution).sample()[i];
} else {
// The int sample value is converted to a double in the assignment.
sample = ((IntegerDistribution) distribution).sample()[i];
}
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots