Java:在main()方法中调用静态方法

时间:2013-04-27 02:26:57

标签: java static-methods main method-call

我应该做以下事情:

  

使用名为generateEmployees()的静态方法编写Java应用程序(客户端)程序,该方法返回10种不同类型的Employee对象的随机列表。您可以使用数组或ArrayList来存储将返回的员工对象。使用for循环使用一些随机数据随机填充不同类型的员工对象。您可能会想到一系列值,如1 - 4.如果随机值为1,则创建一个包含一些随机生成的数据的HourlyEmployee对象,如果为2,则使用SalariedEmployee对象提供一些随机数据,依此类推。我会留下你的聪明才智来生成和填充这些不同的Employee对象。生成这些对象后,将它们添加到您正在使用的数据结构(数组或ArrayList)中。最后,该方法返回此数据结构。

     

在同一个应用程序类中,实现main()方法。调用generateEmployees()静态方法并使用for循环打印每个员工的详细信息以及他们在终端窗口上的收入。

我的generateEmployees()静态方法如下(它可能不正确......而且,数据还没有被随机生成,因为我不确定如何做到这一点,至少就第一个而言和姓氏有关。):

public static Employee[] generateEmployees()
{
    Employee[] employees = new Employee[10];
    int randomNum = 0;

    for (int i = 0; i < 10; i++)
    {
        Random random = new Random();
        randomNum = random.nextInt(4) + 1;

         switch (randomNum)
         {
            case 0:
                employees[i] = new SalariedEmployee("Bri", "Gefroh", 123, 1000);
                break;
            case 1:
                employees[i] = new HourlyEmployee("Bri", "Gefroh", 123, 12.50, 10);
                break;
            case 2:
                employees[i] = new CommissionEmployee("Bri", "Gefroh", 123, 10000, 0.05);
                break;
            case 3:
                employees[i] = new BasePlusCommissionEmployee("Bri", "Gefroh", 123, 10000, 0.05, 2500);
                break;
         }
    }

    return employees;
}

如何调用此方法并在main()方法中使用它?这四种类型的雇员中的每一种都是Employee类的子类,每个子类都有自己的toString()方法,这是我应该输出的内容。

4 个答案:

答案 0 :(得分:4)

静态方法是类方法,而不是实例方法。它在类上调用,而不是类的实例。不同之处在于您可以在没有实例的情况下调用静态方法。

Employee.doSomething();

VS

Employee employee = new Employee();
employee.doSomethingElse();

因此,如果您的generateEmployees()方法与您的main属于同一个类,那么您需要的只是

 generateEmployees();

否则你需要做

 Employee.generateEmployees();

(如果Employee类包含generateEmployees()

答案 1 :(得分:0)

如果方法属于同一个类,您应该可以像任何其他方法一样调用它:

public static void main(String[] args)
{
    Employee[] employees = generateEmployees();

    // TODO: loop through and print out...
}

由于maingenerateEmployees都是静态的,因此它应该有效。 (如果generateEmployees是非静态的,则需要先创建该类的实例。

我建议使用带有“名称”的常量字符串数组,并使用随机数生成索引。这应该有助于将名称随机化。

答案 2 :(得分:0)

这是一个静态方法,因此......不需要在实例化对象的上下文中访问它。您可以通过public static void main(...)方法调用它。如果包含main()方法的类名为Employee,那么......

Employee.generateEmployees(); 

会做到这一点。

答案 3 :(得分:0)

像Ash所述,但如果你需要处理记录,这里没有理由引入额外的变量

 public static void main(String[] args)
 {
      for(Employee employee: generateEmployees())
         print(employee); // define static print somewhere too

 }