No sé si las anotaciones reemplazarán una interfaz, pero puedo ver el encanto. Sin embargo, todo depende de las implementaciones.
Las anotaciones proporcionan metadatos para describir mejor el código, que un consumidor (la mayoría de las veces) interpreta en tiempo de ejecución mediante reflexiones. Usando una interfaz, este contrato de implementación está claramente definido.
Usted podría tener:
interface CrudDao<T> {
Serializable create(T t);
T read(Serializable id);
void update(T t);
void delete(T t);
}
Este sería un contrato complicado de implementar, y que probablemente hagan incurrir en algún tipo de método de encadenamiento.
su lugar se podría hacer algo como:
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 }
}
El inconveniente es que sería engorroso de usar:
class CrudFactory {
long create(Class clazz, Object obj) {
// loop through methods
// find method with @Create
// call method
}
}
Anotaciones en este ejemplo sería una exageración la mayoría de las veces, la OMI . Hay algo que decir sobre un contrato claramente definido y bien documentado.
Estoy un poco confundido acerca de lo que quiere decir con el uso de interfaces para agregar campos a una clase. ¿Quiere decir usar una anotación para agregar métodos y métodos getter setter? – Uri
¿Podría compartir el fragmento aquí también? Definitivamente nos ayudará a comprender tu pregunta. –