首页 > 解决方案 > 我们可以防止自己从导入的库中实例化 Java 类吗

问题描述

我有一个库类,即我从 JAR 加载的类,源代码不在我的控制范围内。我们在项目中的几个地方实例化了它,并且应该始终设置创建对象的属性。不幸的是,图书馆没有中央设置,所以我创建了一个子类:

public class MyClass extends LibraryClass {
    public MyClass() {
        super();
        super.setSomeProperty();
    }
}

然后我用 MyClass 替换了 LibraryClass 的所有实例。它工作正常,但我想防止我自己和我的同事将来实例化一个 LibraryClass。

是否可以将 LibraryClass(或其构造函数)标记为 Maven 或 Eclipse 或其他方式已弃用?这将是一个编译时解决方案。

或者是否可以在运行时使用一些 Spring/Aop 魔术来用 MyClass 替换所有实例化的 LibraryClass?

标签: javaeclipsemavendeprecated

解决方案


如果您在应用程序中使用 Spring,并且所有 bean 实例化都是通过 Spring 完成的,则在应用程序启动时检查是否存在 type 的 bean LibraryClass。如果存在则抛出异常。可以为用于 bean 实例化的任何其他框架实现类似的解决方案。


推荐阅读