Reflection + Super Classe

2 respostas
C

olá, estou pegando parametros atraves de reflection, quero saber como pegar o parametro da classe mae por exemplo

publci class Transacao{
String codigoRede
}
 public class AlteraValorCampo extends Transacao{
     public double d;
	
     public static void main(String args[]) {
         try {
             Class cls = Class.forName("AlteraValorCampo");
             Field fld = cls.getField("d");
			AlteraValorCampo f2obj = new AlteraValorCampo();
			
			
			Object obj=new AlteraValorCampo ();
             System.out.println("d = " + f2obj.d);
             fld.setDouble(f2obj, 12.34);
             System.out.println("d = " + f2obj.d);
				System.out.println(obj.getClass().getDeclaredField("d"));
			System.out.println(obj.getClass().getDeclaredField("codigoRede"));
         }
    
		catch (Exception e) {e.printStackTrace();}
		
     }
     
 }

esta dando esse erro ao pegar o campo codigoRede

java.lang.NoSuchFieldException: java.lang.String

at java.lang.Class.getDeclaredField(Class.java:1216)

at AlteraValorCampo.main(AlteraValorCampo.java:23)

2 Respostas

R

acredito que

o metodo getDeclaredField nao faz reflection na superclass
tenta usar assim…

System.out.println(obj.getClass().getField(“codigoRede”));

a e nao esquece de declarar o campo codigoRede como sendo public

public class Transacao{

public String codigoRede

}

pois o metodo getField so vai dar reflect em fields public =)
espero que de certo

C

Opa, valeu pela força, resolvi meu problema assim…

Field campoObj = obj.getClass().getSuperclass().getDeclaredField(campo);
				campoObj.setAccessible(true);
				campoObj.set(obj, valor);
Criado 4 de agosto de 2006
Ultima resposta 7 de ago. de 2006
Respostas 2
Participantes 2