Olá
Galera estou tentando criar um proxy de segurança
Só que ta dando um classCastException
Segue minhas classes
public class Funcionario extends Pessoa{
private int id;
private double salario;
public Funcionario(String nome, int idade, int id, double salario){
super(nome,idade);
this.id = id;
this.salario = salario;
}
public Funcionario(){}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
}
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class AdminInvocationHandler implements InvocationHandler{
Funcionario funcionario;
public AdminInvocationHandler(Funcionario funcionario){
this.funcionario = funcionario;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
try{
if(method.getName().startsWith("get")){
System.out.println("Chegou aki");
return method.invoke(funcionario, args);
}else if(method.getName().startsWith("set")){
System.out.println("Ou chegou aki");
return method.invoke(funcionario, args);
}
}catch(InvocationTargetException e){
e.printStackTrace();
}
return null;
}
}
import java.lang.reflect.Proxy;
public class TestProxy {
public static void main(String args[]){
new TestProxy().run();
}
public void run(){
Funcionario bruno = new Funcionario();
Funcionario adminProxy = getAdminProxy(bruno);
adminProxy.setId(1);
adminProxy.setNome("Bruno");
adminProxy.setIdade(21);
adminProxy.setSalario(560);
System.out.println("----- Dados Funcionário -----");
System.out.println("\nId: "+ adminProxy.getId());
System.out.println("Nome: "+ adminProxy.getNome());
System.out.println("Idade: "+ adminProxy.getIdade());
System.out.println("Salário: "+ adminProxy.getSalario());
}
public Funcionario getAdminProxy(Funcionario funcionario){
return (Funcionario) Proxy.newProxyInstance(funcionario.getClass().getClassLoader(),
funcionario.getClass().getInterfaces(),
new AdminInvocationHandler(funcionario));
}
public Funcionario getUserProxy(Funcionario funcionario){
return (Funcionario) Proxy.newProxyInstance(funcionario.getClass().getClassLoader(),
funcionario.getClass().getInterfaces(),
new UserInvocationHandler(funcionario));
}
}
Ta dando um classCastException quando eu tento converter o Proxy para o Funcionário
Alguém sabe o porque?
No livro que eu to seguindo o kra faz assim
Valew