Застосування методу Java JRE

Я хотів би відзначити, що використання певних методів, які надає JRE, є застарілим. Як це зробити?

2
Це проблема X-Y?
додано Автор erickson, джерело
Чому ви хочете зробити це?
додано Автор Theodoros Chatzigiannakis, джерело
Переконайтеся, що люди не використовують реалізацію java і використовують мою реалізацію відтепер.
додано Автор snihalani, джерело
Я не хочу, щоб люди використовували реалізацію java. Це все.
додано Автор snihalani, джерело

7 Відповіді

Ви не можете. Тільки код у вашому контролі може мати додану анотацію @Deprecated . Будь-яка спроба інвертування байткода призведе до непереносимого JRE . Це суперечить одноразовому запису Java, запускати в будь-якому місці .

10
додано

ви не можете зневажити методи JRE, але ви можете додавати попередження або навіть компілювати помилки в систему збирання, тобто за допомогою AspectJ або заборонити використання даних методів в IDE.

For example in Eclipse: Go to Project properties -->Java Compiler --> Errors Warnings, Then enable project specific settings, Expand Deprecated and restrited APIs category "Forbidden reference (acess rule)"

Очевидно, ви можете застосувати або перевизначити додавання @Deprecated класу, але це не є чистим рішенням.

5
додано

Додайте такі обмеження до інструкцій щодо кодування та виконайте їх як частину процесу перевірки коду.

2
додано

У якому контексті? Ви маєте на увазі, що ви бажаєте легко налаштувати вашу IDE, щоб перешкодити використанню певних API? Або ви намагаєтеся диктувати світові які API ви забороняєте? Або ви намагаєтеся зробити щось під час виконання?

Якщо перший випадок, Eclipse, і я припускаю інші IDE, дозволяють вам позначити будь-який API як заборонений, знеохочений або доступний на рівні пакета або класу.

Якщо ви маєте на увазі друге, ви, звичайно, не можете. Це було б нерозумно.

Якщо ви намагаєтеся заборонити виклик певних методів під час виконання, ви можете налаштувати політику безпеки, щоб запобігти коду, завантаженому з вказаних місць, від виклику певних методів, які можна перевірити за допомогою SecurityManager , якщо встановлено.

1
додано

Можна скомпілювати власну версію класу і додати його до шляху класу завантаження або до каталогу lib/ext. http://docs.oracle.com/javase/tutorial/ext/basics /install.html Це змінить JDK та JRE.

Фактично ви можете видалити його для компіляції, і ваша програма не буде компілюватися, якщо вона використовується.

1
додано

Snihalani: Так що я отримаю це прямо ...

Ви хочете "зневажити методи в JRE", щоб "Переконатися, що люди не використовують реалізацію java і використовують мою реалізацію відтепер". ?

Перш за все: ви не можете нічого змінити в JRE, і вам не дозволено, це - власність Oracle. Uou може змінити щось локально, якщо ви хочете пройти через проблеми, але це буде просто у вашому локальному JRE, а не в тих, які можна завантажити з веб-сторінки Oracle.

Поруч з цим, ніхто не має вашої реалізації, так як ми можемо її використовувати? Реалізації, що надаються Oracle, роблять саме те, що вони повинні робити, і коли виявляється помилка/помилка/..., вона буде виправлена ​​або замінена новим методом (на якому момент оригінальний метод стає застарілим).

Але, що мене найбільше турбує, це те, що ви пішли б і змінили реалізацію з тим, що ви придумали. Нагадує мені дуже багато фішингу і таких методів, запустивши ваш код, не знаючи, що він робить, навіть не знаючи, що ми використовуємо ваш код. Адже якщо ви матимете доступ до оригінального коду і "побудувати" JRE, що заважає вам змінювати код в оригінальному методі?

Неприйнятним є спосіб, який автор може сказати: "Так ... я робив це в минулому, але здається, що є проблеми з методом. просто щоб не змінювати поведінку існуючих додатків за допомогою цього методу, я не буду змінювати цей метод, а позначати його як застарілий і додати метод, який вирішує цю проблему ".

Ви не є автором, тому вам не належить вирішувати, чи так чи інакше працюють методи.

1
додано

Ви тільки можете це зробити, якщо і тільки якщо ви будуєте свій власний JRE! У цьому випадку просто додайте @Deprecated над відповідним кодовим блоком! Але якщо ви використовуєте JRE у Oracle, ви не маєте права робити це!

1
додано
Якщо ви самі не використовуєте API, у вас немає JRE. Тобто ви не можете називати його Java.
додано Автор erickson, джерело
Так, ти маєш рацію! Це мораль відповіді!
додано Автор Rahul Arman, джерело
ІТ КПІ - Java
ІТ КПІ - Java
436 учасників