Instancia de matriz/classe

0 respostas
DAREK6920
Bom dia a todos ! Estou com um problema meio estranho, tenho uma classe assim:
public static class det {				
	public static class prod {			
		public static String  nItem;
        	public static String  InfAdProd ;		
		public static String  cProd;		
		public static String  cEAN;		
		public static String  xProd;		
		public static String  NCM;		
		public static String  EXTIPI;		
		public static String  Gênero;		
		public static String  CFOP;		
		public static String  uCom;		
		public static String  qCom;		
		public static String  vUnCom;		
		public static String  vProd;		
		public static String  cEANTrib;		
		public static String  uTrib;
                public static String  indTot;
		public static String  qTrib;		
		public static String  vUnTrib;		
		public static String  vFrete;		
		public static String  vSeg;		
		public static String  vDesc ;
                public static String  xPed;
                public static String  nItemPed;
                public static String  vOutro;
				
	public static class di {			
		public static String  NDI;		
		public static String  DDI;		
		public static String  XLocDesemb;		
		public static String  UFDesemb;		
		public static String  DDesemb;		
		public static String  CExportador ;		
	}

Preciso que ela se repita varias vezes e receba conteudos diversos para cada item, portanto fiz o seguinte :

public static KNFE.det det[] = new KNFE.det[100];

Supõe-se que cada um dos 100 elementos desta matriz seja igual em estrutura ao elemento de origem, o que pude constatar quando uso o recurso de autopreenchimento do netbeans. Os elementos estão lá, bonitinhos e prontos para serem usados.
No entanto....

Quando tento colocar valores neles usando reflection a coisa degringola.

public static void alocar(String meto) throws ClassNotFoundException, NoSuchFieldException, IllegalArgumentException{
       
       String metodo = "";
       String cla = "";
       try {
            Field f1 = null;
            Integer ti = meto.indexOf("|");
            Integer vo = meto.indexOf("=");
            cla = meto.substring(0,ti);
            cla = cla.substring(0,cla.length()-1);
            metodo = meto.substring(ti+1,vo).trim();
            String valor = meto.substring(vo+1,meto.length()).trim();
            
            if (!meto.contains("det")){
                cla = "jpegasus.KNFE$" + cla;   
            }
            
            Class c;
            c = Class.forName(cla);
            f1 = c.getDeclaredField(metodo);
            f1.setAccessible(true);
            f1.set(c,valor);
        } catch (Exception ex){
            funcoes.m("Linha 250 de captura/alocar indica cla =  " + cla + " e metodo = " + metodo + " erro " + ex);
        }    
                    
   }
A mensagem que recebo indica que a classe det[1].prod não existe. Se alguem puder me ajudar, agradeço de montão.

Dario

Criado 19 de outubro de 2013
Respostas 0
Participantes 1