Boa tarde pessoal,
alguém sabe se é possivel forcar uma annotation?
exemplo tenho uma interface e quero que quem cire uma implementação dela tenha que colocar uma anotação.
Boa tarde pessoal,
alguém sabe se é possivel forcar uma annotation?
exemplo tenho uma interface e quero que quem cire uma implementação dela tenha que colocar uma anotação.
Não - esse tipo de coisas (uma classe, método ou interface que não tem uma anotação “requerida”) só dá para detectar em tempo de execução ou então quando você for interpretar a anotação (via reflection, por exemplo).
Antes de partir para esse tipo de solução, avalie se você não está colocando lógica de aplicação nas suas anotações. Se for o caso, retire essa lógica das anotações e deixe essa lógica explícita no contrato de sua interface.
Anotações são um recurso poderoso quando você precisa de metadados, mas se você as utiliza para implementar a lógica da sua aplicação, você acaba adicionando complexidade desnecessária à sua aplicação.
Obrigado pela ajuda,
vou explicar o que preciso fazer, derrepente vocês tem uma idéia que possa me ajudar…
precisor criar um framework que dada uma classe( Bean ) possa fazer as operacoes de banco sem precisar tocar em sql //trabalho da faculdade
exemplo básico
Produto p = new Produto(); // pode ser qualquer tipo de bean
Banco.delete( p );
de forma simples seria isso, uso reflexao para fazer as operacoes e preciso saber qual atributo de Produto representa a PrimaryKey por isso criei uma anotação
mas não existe nada que garanta que quem criou a classe Produto lembrou de fazer a anotaçao.
Hoje, através de reflexion eu verifico se a anotacao está presente, se não eu levanto uma exception, mas achei uma solução ruim, queria uma ideia para fazer isso de uma
forma melhor, vocês tem alguma idéia?
De fato isso não pode ser forçado em tempo de compilação. Continue a fazer como você fez (verificar a anotação em tempo de execução).
A propósito, você pode ter um módulo de validação, que faça uma pré-análise das suas classes, então você evita levantar o sistema completo e receber a exceção quando você for acessar a tal classe Produto. Uma forma simples de fazer essa validação é listar as classes em um arquivo de configuração (é possível, com um certo trabalho, listar as classes dentro de um Jar e fazer a validação que vocè está fazendo, mas isso fica para você procurar aqui no GUJ mesmo como é que se faz para listar as classes que estão dentro de um JAR.)
Ok, Obrigado pessoal.
a principio vou deixar assim.
alguem tem uma idéia melhor de como realizar as operacoes ( delete …) sem precisar marca a chave primaria com uma anotaçao?