使用注释作为对象分类器?

时间:2011-12-20 19:05:00

标签: java sorting annotations

我正在使用一个容器来保存一个对象列表(同一个类),这些对象包含使用自定义RetentionSortable注释的某些字段。注释的目的有两个:

  1. 将该字段标记为能够与另一个对象相同的字段进行比较。
  2. 并提供该字段的排序名称(例如,修改日期或名字)。
  3. 然后容器将遍历对象列表(记住它们就像)并收集对象包含的RententionSortable列表并将列表传递给GUI。 GUI将显示列表并请求可排序的选择并将其返回到sortable,然后将根据所选的RetentionSortable对列表进行排序。

    此方法或排序对象的目的是允许我创建一个小容器,只要它至少有一个RetentionSortable字段,它就可以一般接受任何对象并对其进行排序。

    我的直觉是尖叫,这是一种不好的做法,依靠这种反思是一个坏主意,但我的测试工作完美无缺,比我预期的要好。

    使用注释反射来查找由抽象对象排序的特定注释良好实践注释的所有字段吗?

2 个答案:

答案 0 :(得分:2)

您认为基本上每个注释驱动的配置框架的工作原理? “给我所有这样的类型字段注释'@Inject'”或“给我一切包装baz.plugh注释'@Controller'”。

是否对“抽象排序”有好处,我不明白为什么不这样做。如果它有效,并且不需要像bean映射器和bean信息类这样的东西,那么问题是什么?

答案 1 :(得分:2)

注释是为了方便,你的使用使情况更方便,所以这似乎是合理的。另一种方法是维护一个单独的字典,其中哪些字段可以对哪些对象进行排序,而且从关注点的分离来看稍微麻烦但稍微好一些。

问题实际上是你的对象是否应该知道注释(对象是否会在注释没有意义或冲突的另一种情况下重用)。使用单独的可排序字段列表,您可以选择在任何给定情况下应用哪些字段。

如果方便权衡对您有用,那么您应该坚持使用注释,只要您了解潜在的设计后果(对您的特定情况可能没有任何意义)。