2015-01-11 64 views
-2

我是Java新手,想要確認在比較方法中實現比較器接口時能否使用不同類型的對象 。 贊。比較(員工,部門)。或加班,我們將通過相同類型的對象Ex,員工或部門。如果你詳細給出答案,這將對我有所幫助。 請確認我.Thanks提前 沙希德Java比較器相關

+0

你爲什麼要這麼做? –

+0

通過實現接口可比較 – tung

+1

您可以將它們作爲「對象」進行比較。 Java中的所有對象都從Object類繼承。 – khelwood

回答

2

您可以實現類似的方法:

int compare(Object a, Object b); 

,如果你想比較桔子和蘋果。如果你需要更嚴格一些,你可以(應該!)定義比較對象需要共同擁有的東西。然後,你可以用一個接口開始:

public interface CorporateObject 
{ 
    int getUselesnessFactor(); 
} 

,然後請爲Employee和Department類實現它:

public class Employee implements CorporateObject 
{... 

public class Department implements CorporateObject 
{... 

最後,比較方法將如下所示:

public int compare(CorporateObject a, CorporateObject b){ 
    if(a.getUselesnessFactor() < b.getUselesnessFactor()) return -1; 
    if(a.getUselesnessFactor() > b.getUselesnessFactor()) return 1; 
    return 0; 
} 

你會用這樣的方法:

int result; 
Employee boss = new Employee(); 
Employee john = new Employee(); 
Department nosepickers = new Departement(); 
Department slackmasters = new Department(); 

result = compare(boss, john); // employee to employee 
result = compare(nosepickers, slackmasters); // dept to dept 
result = compare(boss, nosepickers); // employee to dept 
result = compare(slackmasters, john); // dept to employee 

+0

我們不能通過Employee和Department引用來比較(Employee emp,Department dept)而不是CorporateObject,我認爲這也應該起作用...如果我錯了,請幫我理解你的概念(corporateObject a,CorporateObject b)。根據你的代碼,我的理解是比較方法總是採用相同類型的引用。請幫助 – shahid

+0

查看編輯答案 - 您可以以任意組合傳遞。這就是接口的用途 - 只要它們實現了通用接口,比較方法並不關心你傳遞的是什麼CorporateObject。 – ptrk

+0

謝謝你的寶貴意見。它幫助我瞭解了這個概念更加清晰。 – shahid