[英]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...
}
由於main
和generateEmployees
都是靜態的,因此它應該可以工作。 (如果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.