将Java构造函数/方法标记为不供客户端使用的首选方法?

时间:2012-01-09 13:44:03

标签: java deprecated setter default-constructor

我想将一些默认构造函数和setter标记为不可用/建议使用。我需要它有点类似于注释@Deprecated,但它不应该具有相同的含义。我只是添加了构造函数和setter,因为有些框架让我这样做(Hibernate,Spring,Jackson)。你知道这样的结构是否存在吗?

3 个答案:

答案 0 :(得分:3)

这里真正的答案是只公开API之外的接口和工厂。这允许您隐藏由于框架而可能需要非私有的方法。

如果您不能这样做,请尝试将方法设为默认范围(而不是protected)。

此外,您可以将注释用作内部标记。在我的项目中,我们为此创建了注释:PresentForDependancyInjection和/或FrameworkEntryPoint。这些是仅限装饰的注释,但是要明确这一点。

答案 1 :(得分:0)

制作protected,这是通常用于防止在其他地方调用它们的方法。如果框架希望它们是public,那么你几乎无法做到,除非你可以将它们配置为不这样做。

答案 2 :(得分:0)

据我了解,您希望找到一种方法来处理一些框架要求而不会有麻烦?您希望避免Java Bean命名约定,同时能够看到由此类框架处理的代码吗?据我所知,使用普通Java语言是不可能的,您可以使用AOP /字节码增强工具来装饰您的类兼容这样的框架....这可能有用,但它有不同的缺点: - 增加复杂性 - 维护可能会很棘手 您可以使用个人注释来指导字节码增强....

另一种观点是使用分形方法,但这个框架并不为人所知,即使它是我所知道的最令人印象深刻的框架之一。您可以在这里查看:http://fractal.ow2.org/java.html

HTH 杰罗姆