Ver conteúdo de variável/método sem invocá-lo através de seu objeto

2 respostas
Leandro_M

Olá pessoa,

Como é um assunto novo para mim acredito que não tenha procurado corretamente no google e guj, caso alguém encontrar algum link pertinente à minha dúvida fico agradecido.

A dúvida é: Como faço para ver um conteúdo de uma variável ou método sem precisar invocá-lo através de seu objeto.

Ex: Tenho uma classe Bean
public class MyClass {

    private String campo1;
    private String campo2;

    /**
     * @return the campo1
     */
    public String getCampo1() {
        return campo1;
    }

    /**
     * @param campo1 the campo1 to set
     */
    public void setCampo1(String campo1) {
        this.campo1 = campo1;
    }

    /**
     * @return the campo2
     */
    public String getCampo2() {
        return campo2;
    }

    /**
     * @param campo2 the campo2 to set
     */
    public void setCampo2(String campo2) {
        this.campo2 = campo2;
    }
}
E uma classe que utiliza a classe acima
public class ChamaMyClass {

    public static void main(String [] args){

        MyClass mc = new MyClass();
        mc.setCampo1("Campo1 preenchido");

        for(Method m : mc.getClass().getDeclaredMethods()){
            System.out.println(m.getName());
            /* --> Como consigo ver o valor do método m.getName()?
             * Nesse caso seria Campo1 = 'Campo1 preenchido'
             *                  Campo2 = null
             */
        }

        for(Field f : mc.getClass().getDeclaredFields()){
            System.out.println(f.getName());
             /* --> Ou como consigo ver o valor do campo f.getName()?
              * Nesse caso seria Campo1 = 'Campo1 preenchido'
              *                  Campo2 = null
              */
        }
    }
}
Utilizando as classes Method e Field eu consigo listar o nome dos campos e métodos do meu Bean. Gostaria de saber como eu descubro (na classe ChamaMyClass) se tais campos e métodos estão vazios ou preenchidos De forma automática conforme acima.

Obrigado

2 Respostas

discorpio

Boa noite.

Amigo, acho que voce só vai conseguir isso testando se a classe é do tipo MyClass e mesmo assim, para acessar os seus métodos terá que fazer o Casting, assim:

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ChamaMyClass {

    public static void main(String [] args){

        MyClass mc = new MyClass();
        mc.setCampo1("Campo1 preenchido");
        getValueMethods(mc);

        for(Method m : mc.getClass().getDeclaredMethods()){

            System.out.println(m.getName());
            /* --> Como consigo ver o valor do método m.getName()?
             * Nesse caso seria Campo1 = 'Campo1 preenchido'
             *                  Campo2 = null
             */
        }

        for(Field f : mc.getClass().getDeclaredFields() ){
            System.out.println(f.getName());
             /* --> Ou como consigo ver o valor do campo f.getName()?
              * Nesse caso seria Campo1 = 'Campo1 preenchido'
              *                  Campo2 = null
              */
        }
    }
    
    public static void getValueMethods(Object comp){
       if (comp instanceof MyClass){
           MyClass obj = (MyClass)comp;
           System.out.println(obj.getCampo1());
           System.out.println(obj.getCampo2()); 
       }  
    }

}
Leandro_M

Olá discorpio,

Acho que do jeito que estou tentando fazer não é possível. Obrigado pela pela ajuda.

Vou testar as informações que você passou.

Abs

Criado 9 de maio de 2010
Ultima resposta 10 de mai. de 2010
Respostas 2
Participantes 2