如何使用被Java根类(即Object类)掩盖的对象调用原始类方法?

普兰尼

我有Object类型的列表列表,其中包含org.apache.commons.math3库的NormalDistribution和BinomialDistribution类的对象。现在,我想在这些对象上调用sample()方法,但是当我调用该方法时,由于该对象的sample()未定义,因此引发了错误。我如何在不更改列表列表类型的情况下使其工作(因为我想将属于不同类的对象存储在单个列表列表中)?

 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    
}
}
斯蒂芬·C

这是问题所在:

NormalDistributionBinomialDistribution类没有,有一个共同的超类sample()方法。一个是的子类型,RealDistribution另一个是的子类型IntegerDistribution各自的sample()方法返回不同的类型。double[]int[]分别。

因此,您需要的是这样的东西:

    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];
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档