Duvida com classes e tipos

No Head first jsp e servlets diz algo assim:

ABSTRACT CLASS Person

  • String getName()
  • void setName(String)

CLASS Employee

  • int getEmpID()
  • void setEmpID(int)

<jsp:useBean id="person" type="foo.Person" class="foo.Employee" scope=request">E dai o codigo gerado seria:
Person person = new Employee();

Mas isso ai não gera erro ?? se eu tentar setar ou pegar o valor de EmpID ??
Não é verificado se o método existe no tipo e depois buscado no objeto ??

ninguem ? :frowning:

vc ja testou !?!!!?

axo pouco provavel… (não impossivel) que esteja incorreto…

Eu não testei, mas provavelmente tá certo, mas fiquei na duvida em como o servidor faz pra setar o ID, já que Person não possui esse método. Ele faz um cast por conta ??

Acho improvavel um erro tb…pq a instanciaçao esta correta…

Sim ele não dá erro, e segundo o livro seta o nome e EmID corretamente. Mas a minha pergunta é como ele faz isso. Em J2SE se tu fizer

Person person = new Employee(); person.setEmID(12); Dá erro, porque não é possível achar o método setEmID na classe Person.

Matheus:

Acredito que ele utiliza Aspecto pra poder criar um metodo em tempo de execução.

Dessa forma, no momento que você informa um valor no campo ID ele automaticamente através de aspecto e annotação, sabe que para setar um valor, precisa criar um set + nome do campo, assim é criado o setId em tempo de execução e seta o valor pra ele.

Alguém me corrige se eu estiver errado.

Abraços

Acredito que possa ser pela utilização de reflexão na hora de chamar o método, dessa forma ele deve usar o tipo da classe, e não o tipo passado pelo parametro type.

Com reflexão pode-se resolver o problema do casting.