类级别注释与接口

我正在查看一些代码,其中类级别注释用于向某些类“添加”属性,稍后使用reflection访问和使用这些属性。

我的问题:何时使用注释将新字段添加到类中,而不是使用接口。 这有什么好处和缺点?

我不知道注释会取代接口,但我可以看到它的吸引力。 这完全取决于实现。

注释提供元数据以进一步描述代码,消费者(大多数时候)使用reflection在运行时解释代码。 使用接口,明确定义了此实现合同。

你可以有:

interface CrudDao { Serializable create(T t); T read(Serializable id); void update(T t); void delete(T t); } 

这将是一个繁琐的实施合同,并可能会产生某种方法链接。

相反,你可以这样做:

 class SomeDao { @Create long create(SomeEntity e) { // code } @Read SomeEntity read(long id) { // code } @Update void update(SomeEntity e) { // code } @Delete void delete(SomeEntity e) { // code } } 

缺点是使用起来很麻烦:

 class CrudFactory { long create(Class clazz, Object obj) { // loop through methods // find method with @Create // call method } } 

在这个例子中的注释在大多数情况下都是过度的,IMO。 关于明确定义的,记录良好的合同,有一些话要说。