Предоставление метода интерфейса вместо реализации интерфейса в JavaJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Предоставление метода интерфейса вместо реализации интерфейса в Java

Сообщение Anonymous »

Я читаю об интерфейсах в Java. Упоминается, что нам необходимо реализовать метод CompareTo для вызова «сортировки» в контейнере ArrayList, например, класс «Сотрудник» должен реализовывать сравнимый интерфейс.
Позже объясняется, почему класс «Сотрудник» не может этого сделать. просто предоставить метод «compareTo» без реализации интерфейса Comparable? Причина использования интерфейсов заключается в том, что программирование на Java строго типизировано. При вызове метода компилятор должен иметь возможность проверить, что метод действительно существует.
Поэтому я ожидаю ошибку времени компиляции, если не реализую «Сравнимый интерфейс и использование массивов». .sort, но я не наблюдаю ошибку компиляции, а вместо этого получаю ошибку времени выполнения. Пожалуйста, объясните, почему ошибка времени компиляции не отображается в приведенном выше сценарии.
Ниже приведен фрагмент кода
package com.vrk.inheritance;

import java.time.*;
import java.util.Arrays;

public class Employee
{
private String name;
private double salary;
private LocalDate hireDay;

public Employee(String name, double salary, int year, int month, int day)
{
this.name = name;
this.salary = salary;
hireDay = LocalDate.of(year, month, day);
}

public String getName()
{
return name;
}

public double getSalary()
{
return salary;
}

public LocalDate getHireDay()
{
return hireDay;
}

public void raiseSalary(double byPercent)
{
double raise = salary * byPercent / 100;
salary += raise;
}

/*public int compareTo(Object otherObject) {
System.out.println("Employee compareTo called");
return 0;
}*/

/**
* equalTo function in employee. Created on 8th Sep 2024
* @param another object to compare to this object
*/
public boolean equals(Object otherObject) {
// quick test to check if objects are identical
if ( this == otherObject) return true;

// must return false if the explicit parameter is null
if(otherObject == null) return false;

// if the classes don't match, they can't be equal
if (getClass() != otherObject.getClass()) return false;

// now we know otherObject is a non-null Employee
var other = (Employee) otherObject;

// test whether the fields have identical value
// Not sure in my setup below line is not working, but online compiler it is working.
// java.util.Objects.equals(this.hireDay, other.hireDay);
return true;
}

public static void main(String[] args) {
var staff = new Employee[3];

// fill the staff array with Manager and Employee objects
staff[0] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
staff[1] = new Employee("Tommy Tester", 40000, 1990, 3, 15);
staff[1] = new Employee("Ravi Tester", 60000, 1999, 4, 16);
Arrays.sort(staff);
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... ce-in-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»