2015-01-11 2 views
-2

Я новичок в Java, поэтому мне хотелось подтвердить, что у нас есть разные типы объектов в методе сравнения при реализации интерфейса компаратора. Вроде. сравнить (Employee, Department). или evertime мы передадим тот же тип объекта Ex, либо Employee, либо Department. Это будет полезно для меня, если вы дадите ответ в деталях. Пожалуйста, подтвердите мне .THANKS в Advance ШахидJava Comparator Связанный

+0

Почему вы хотите это сделать? –

+0

, реализуя inteface, сопоставимый – tung

+1

Вы можете сравнить их как 'Object's. Все объекты в Java наследуются от класса 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 и Department для сравнения (Employee emp, Department dept) вместо CorporateObject, я думаю, что это тоже должно работать ... Если я ошибаюсь, помогите мне понять вашу концепцию (CorporateObject a, CorporateObject b) .. Согласно вашему коду, я понимаю, что метод сравнения всегда принимает тот же тип refernece. Справка Pls – shahid

+0

см. Отредактированный ответ - вы можете передавать оба в любой комбинации. Для этого нужен интерфейс - методу сравнения не важно, что именно CorporateObject вы передаете, если они реализуют общий интерфейс. – ptrk

+0

Благодарим вас за ценные комментарии. Это помогло мне понять концепцию более понятной. – shahid

Смежные вопросы