/ / Какви са предимствата от използването на @Deprecated нотация само в интерфейса? - java, остарял

Какви са ползите от използването само на интерфейса @Deprecated? - java, отхвърлен

Какви са ползите за Java програмиране от използването на метода @Deprecated нотация за и интерфейс, но не и за класа, който го прилага?

public interface Joe {

@Deprecated
public void doSomething();

...
}

public final class Joseph implements Joe {

public void doSomething() {
...
}

...
}

Отговори:

8 за отговор № 1

Вярвам, че това е недостатък в езика на Javaсебе си и е глупост да се посочва метод в интерфейс като оттеглен чрез пояснение, а методът да не се счита за оттеглен в класа за изпълнение.

Би било по-добре, ако @ оттеглената-ност на метода се наследи. За съжаление, изглежда, Java не поддържа това.

Помислете как инструментариум, като IDE, третира товаситуация: Ако типът на променлива е деклариран като интерфейс, тогава @depreposed методите могат да бъдат рендирани с изтриване. Но ако типът на променлива е деклариран като клас за изпълнение и подписът на класа не включва @deprecated, тогава методът ще бъде представен без изтриване.

Основният въпрос е: какво означава да се оттегли метод в интерфейс, но не в клас на изпълнение (или в разширяващ се интерфейс)? Единственото разумно намерение е методът да бъде оттеглен за всичко под интерфейса в йерархията на класа. Но езикът не поддържа това поведение.


11 за отговор № 2

@ Предоставената е документация. Ако хората кодират интерфейс, можете да маркирате някои аспекти на този интерфейс като оттеглени. По този начин хората знаят да не го използват.

Класът на изпълнение на интерфейса е aдетайл. Метод от този клас се случва да удовлетвори интерфейса, но може и да не е остарял сам. Отнемането на този метод може или не може да бъде подходящо.

Създаване на нов клас, който реализира интерфейсозначава, че трябва да приложите остарелите методи. Вероятно те трябва да работят, освен ако не знаете, че клиентите от класа не използват оттеглените методи. Например, ако създавате контейнер на сървър за HTTP, трябва да внедрите HttpServletResponse.encodeUrl() метод, въпреки че е оттеглен в полза на encodeURL(), Това е така, защото потребител от вашия клас може да извика този остарял метод.


6 за отговор № 3

според мен е така спорен: интерфейс за оттеглени методи не трябва да се използва независимо от прилагането му (моля, предоставете контрапримери, ако не)


0 за отговор № 4

Ако искаме да префабрикуваме съществуващия код с неподходящи методи в интерфейса и в реализацията, тогава можем да използваме @Deprecated в методите на интерфейса в полза на чистото новометоди временно за няколко издания. Може да е грозно, само за да поддържаме кода обратно съвместим, можем да го използваме. Това ще покаже в отчета за IDE и SONAR, че е оттеглен метод и принуждава клиентите да използват нови методи.