如何声明 Java API 中的方法已弃用我的本地项目?
How do I declare a method from a Java API as deprecated for my local project?
我正在尝试向扩展 JList
的 class、CustomList
添加功能。现在 CustomList 的所有当前用法都从 JList
调用非覆盖方法 setModel(Listmodel<E> lm)
。我卡在旧版本的 Java, Java 1.6 上,由于擦除问题不允许我直接覆盖此方法。我的所有研究使我得出结论,我必须重命名此方法并将所有当前用法替换为新命名的方法。
我想做的是警告其他使用 CustomList
的人,他们需要调用此方法而不是 JList.setModel(ListModel<E> lm)
。我不确定如何在本地弃用我的项目的本地方法。
下面显示了一个概述我的新方法的简单示例:
public class CustomList<E> extends JList {
private ArrayList list;
public void newSetModel (ListModel<E> lm){
super.setModel(lm);
list = new ArrayList<Boolean> (lm.getSize());
}
}
请注意,我不能简单地在扩展中使 JList 通用以允许覆盖,因为我坚持使用 Java 1.6
在 Java 中没有明智的方法可以做到这一点。
理想情况下,您有一个构建/CI 过程,并且您可以在其中使用工具来执行策略。查看 Checkstyle 和 PMD,也许其中之一可以让您将特定方法调用列入黑名单。
否则,您可以使用 asm 或 aspectj 等底层技术来编写自己的检查,但这并不容易。或者您可以老一套,编写一个测试来解析源文件并查找错误的方法调用,但这很容易出错。
我会说你最好的选择是让你的其他团队成员知道。你们做代码审查吗?你应该。
我正在尝试向扩展 JList
的 class、CustomList
添加功能。现在 CustomList 的所有当前用法都从 JList
调用非覆盖方法 setModel(Listmodel<E> lm)
。我卡在旧版本的 Java, Java 1.6 上,由于擦除问题不允许我直接覆盖此方法。我的所有研究使我得出结论,我必须重命名此方法并将所有当前用法替换为新命名的方法。
我想做的是警告其他使用 CustomList
的人,他们需要调用此方法而不是 JList.setModel(ListModel<E> lm)
。我不确定如何在本地弃用我的项目的本地方法。
下面显示了一个概述我的新方法的简单示例:
public class CustomList<E> extends JList {
private ArrayList list;
public void newSetModel (ListModel<E> lm){
super.setModel(lm);
list = new ArrayList<Boolean> (lm.getSize());
}
}
请注意,我不能简单地在扩展中使 JList 通用以允许覆盖,因为我坚持使用 Java 1.6
在 Java 中没有明智的方法可以做到这一点。
理想情况下,您有一个构建/CI 过程,并且您可以在其中使用工具来执行策略。查看 Checkstyle 和 PMD,也许其中之一可以让您将特定方法调用列入黑名单。
否则,您可以使用 asm 或 aspectj 等底层技术来编写自己的检查,但这并不容易。或者您可以老一套,编写一个测试来解析源文件并查找错误的方法调用,但这很容易出错。
我会说你最好的选择是让你的其他团队成员知道。你们做代码审查吗?你应该。