2015-01-11 3 views
-2

Java에 익숙하지 않아 비교기 인터페이스를 구현하는 동안 비교 방법에 다른 유형의 객체를 사용할 수 있는지 확인하고 싶습니다. 좋아요. 비교 (직원, 부서). 또는 우리는 동일한 유형의 개체 Ex, Employee 또는 Department를 전달할 것입니다. 대답을 자세히 적어 주시면 도움이 될 것입니다. 사전 샤 히드 나를 .Thanks을 확인하시기 바랍니다 것은Java Comparator Related

+0

왜 그렇게하고 싶습니까? –

+0

인터페이스를 구현하여 비교할 수 있습니다. – tung

+1

'Object's로 비교할 수 있습니다. 자바의 모든 객체는'Object' 클래스에서 상속받습니다. – khelwood

답변

2

당신은 같은 방법을 구현할 수 있습니다

int compare(Object a, Object b); 

을하고 원하는 경우 사과에 오렌지를 비교합니다. 좀 더 엄격해야 할 필요가 있다면, 비교 대상이 공통으로 갖고 있어야하는 것을 정의 할 수 있어야한다. 당신의 직원 및 부서 클래스 모두를 구현할 수 있도록 다음

public interface CorporateObject 
{ 
    int getUselesnessFactor(); 
} 

과 : 그럼 당신은 인터페이스를 시작할 수 있습니다

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 emp, 부서 dept) CorporateObject 대신 비교할 패스, 나는 또한 작동해야한다고 생각 ... 만약 내가 잘못 pls 귀하의 개념 (corporateObject, CorporateObject b)를 이해하는 데 도움이 .. 귀하의 코드에 따라 내 이해는 항상 동일한 유형의 참조 걸릴 비교 메서드입니다. Pls help – shahid

+0

편집 된 답변보기 - 두 가지를 모두 조합하여 전달할 수 있습니다. 이것이 바로 인터페이스가있는 이유입니다. compare 메소드는 공용 인터페이스를 구현하는 한 정확히 어떤 CorporateObject를 전달하든 상관하지 않습니다. – ptrk

+0

귀중한 의견에 감사드립니다. 그것은 개념을 더 분명히 이해하는 데 많은 도움이되었습니다. – shahid