如何声明 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 等底层技术来编写自己的检查,但这并不容易。或者您可以老一套,编写一个测试来解析源文件并查找错误的方法调用,但这很容易出错。

我会说你最好的选择是让你的其他团队成员知道。你们做代码审查吗?你应该。