簡體   English   中英

Java:在main()方法中調用靜態方法

[英]Java: Calling a static method in the main() method

我應該執行以下操作:

使用稱為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()方法,這是我應該輸出的。

靜態方法是類方法,而不是實例方法。 它是在類上調用的,而不是類的實例。 區別在於您可以先調用靜態方法而無需先擁有實例。

Employee.doSomething();

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

因此,如果您的generateEmployees()方法與主類位於同一類中,那么您所需要做的就是

 generateEmployees();

否則你需要做

 Employee.generateEmployees();

(如果Employee類包含generateEmployees()

如果該方法在同一類中,則您應該能夠像其他任何方法一樣調用它:

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

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

由於maingenerateEmployees都是靜態的,因此它應該可以工作。 (如果generateEmployees是非靜態的,則需要首先創建該類的實例)。

我建議在其中包含一個帶有“名稱”的常量字符串數組,並使用隨機數生成索引。 這應該有助於稍微隨機化名稱。

這是一個靜態方法,因此...不需要在實例化對象的上下文中對其進行訪問。 您可以知道,可以從您的公共static void main(...)方法調用它。 如果包含main()方法的類名為Employee,則...

Employee.generateEmployees(); 

會成功的

就像Ash所說的那樣,但是如果您需要處理記錄,這里沒有理由引入額外的變量

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

 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM