使用子类定义自制超类时出错

时间:2016-02-08 12:43:42

标签: java

我写了一个抽象的超类分布作为folows,它包含一个构造函数和两个方法。

public abstract class Distribution
{
 public Distribution(){}

 public abstract void setParameters(HashMap<String,?> hm);

 public abstract int getSample();
}

此后,我写了4个子类(Poisson,Geometric,Deterministic和Binomial)。这些子类看起来都一样,就像这样;

public class Binomial extends Distribution
{
    BinomialDistribution distribution;

   public Binomial()
   {
       super();
   }

    @Override
    public void setParameters(HashMap<String,?> hm)
    {
    try
    {
         int n = 0;
         double p =0.0;
            if (hm.containsKey("n"))
                if (hm.containsKey("p"))
                    p = Double.parseDouble((String) hm.get("p"));
                else 
                    throw new Exception("Exception: No p-value found");
            else
                throw new Exception("Exception: No n-value found");


        distribution = new BinomialDistribution(n,p);
    }
    catch(Exception e)
    {
        System.out.println(e.getMessage());
    }
    }


    @Override
    public int getSample()
   {
       return distribution.sample();

   }  

}

在另一个课程中,我想使用这些课程。我想给Distribution.setparameters方法提供一个HashMap,让程序决定哪个子类适合该HashMap中给出的参数。

如果我想将A分布定义为另一个类,这似乎不起作用。

Distribution arrivalLength1distr = new Distribution();

有人可以告诉我我做错了什么以及如何解决我的问题?

谢谢!

0 个答案:

没有答案